如何使用Object.assign通过动态密钥更新hashmap字段并避免突变?

时间:2016-11-25 14:16:58

标签: javascript hashmap

如何定义updaternewState.c.x === 8中变为真,并避免state中的任何变异?

var state = {
    a: {x: 1, y: 1},
    b: {x: 2, y: 2},
    c: {x: 3, y: 3},
    d: {x: 4, y: 4},
};

var key = 'c';
var x = 8;

var updater = {
    //Having state, key and x here....

}

var newState = Object.assign({}, state, updater);
if(newState.c.x === 8) {
  wooHoo();

}

提前致谢!

1 个答案:

答案 0 :(得分:2)

您可以使用一些ES6解构和Object.assign()

var state = {
    a: {x: 1, y: 1},
    b: {x: 2, y: 2},
    c: {x: 3, y: 3},
    d: {x: 4, y: 4},
};

var key = 'c';
var x = 8;

var updater = {
  [key]: Object.assign({}, state[key], {x})
}

var newState = Object.assign({}, state, updater);
if(newState.c.x === 8) {
  alert('True')
}