我在javascript中有以下变量:

var stC = {
    kosten: 5,
    tijd: 4,
    locatie: 3,
    beoordeling: 2,
    garantie: 1
};


例如,如果stC.kosten更改为3,我想更改具有相同值的变量,在此示例中,stC.locatie更改为stC.kosten的旧值。

因此,如果stC.kosten变成3,stC.locatie变成5。
或者stC.beoordeling变为5而不是stC.kosten变为2。

尝试搜索,但找不到任何解决问题的方法。

有谁知道我该怎么做?

最佳答案

像这样吗

var stC = { kosten: 5, tijd: 4, locatie: 3, beoordeling: 2, garantie: 1 };

function changeValue(obj, key, value){

    var current = obj[key],
        match = getKeyByValue(obj, value);

    if(!match) return;

    // swap values
    obj[key] = value;
    obj[match] = current;
}

function getKeyByValue(obj, value){
     return Object.keys(obj).filter(function(key) {
         return obj[key] === value;
     })[0];
}

changeValue(stC,
           'kosten', // property to change
            3); // new value


http://jsfiddle.net/0vsyj603/

如果要使用此IE9之前的版本,请对Object.keys使用polyfill。

09-25 16:08
查看更多