前提条件
首先有一个非常巨大的对象…
var todos = {
t79444dae: { title: 'Task 50001', completed: false },
t7eaf70c3: { title: 'Task 50002', completed: false },
t2fd2ffa0: { title: 'Task 50003', completed: false },
t6321775c: { title: 'Task 50004', completed: false },
t2148bf88: { title: 'Task 50005', completed: false },
t9e37b9b6: { title: 'Task 50006', completed: false },
tb5b1b6ae: { title: 'Task 50007', completed: false },
tfe88b26d: { title: 'Task 50008', completed: false }
}
需求:现在需要把其中的某条记录做修改,并返回一个新的对象
var id = 'tfe88b26d';
var newsTodos = Object.assign({}, todos, {
[id]: Object.assign({}, todos[id], { completed: !todos[id].completed})
});
console.log( newsTodos );
如果是像上面传统的方式操作,则需要消耗大量的空间和时间,则可以使用 immutable.js 完成
const { fromJS } = require('immutable');
var newTods = fromJS( todos);
var news = newTods.setIn(['tfe88b26d', 'completed'], true);
console.log( news.toJS() );