2014-11-17 3 views
2

나는 다음과 같은 변수 자바 스크립트가 있습니다시계 변화

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

예를 들어 나는,이 예 stC.locatie에서 같은 값을 갖는 변수를 변경하려면 3-stC.kosten 변화가로 변경하는 경우 이전 값은 stC.kosten입니다. stC.kosten가 될 경우

그래서 3 stC.locatie 5.
이된다 또는 stC.beoordeling 경우 2.

검색을 시도했지만, 문제를 해결하기 위해 아무것도 찾을 수 없었다됩니다 5 stC.kosten보다가된다.

내가 어떻게이 작업을 수행 할 수 있는지 아는 사람이 있습니까?

+2

이 작업을 수행 할 것입니다, 당신은 단지 당신이있어 이유 코드 – Jamiec

답변

1

이와 비슷한?

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을 사용합니다.

+0

는 그나마 알고 쓸 필요가 마법이 없다 downvote - 모든 브라우저에서 작동하는 실제 솔루션을 제공하는 유일한 대답입니다. – Jamiec

+0

@ Jamiec 누군가가 downvote spree에 갔던 것처럼 보입니다. :) 그렇습니다.'Object.keys' shim으로 모든 브라우저에서 확실히 작동합니다. – filur

+0

Thnx! 매력처럼 일 했어! – deruiter2

0
stC.prototype = 
{ 
    setKosten : function(value) 
    { 
     this.kosten = value; 
     this.locatie = whatever; 
    } 
}; 
-2

당신은 getter 및 setter 여기

var o = { 
    _kosten: 3, 
    get kosten() { return this._kosten; }, 
    set kosten(x) { this._kosten = x; /* DO YOUR ADDITIONAL LOGIC HERE */ } 
}; 

를 사용할 수는 MDN 문서 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects#Defining_getters_and_setters, https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get이다 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set