首先有一個很是巨大的對象…bash
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 }
}
複製代碼
需求:如今須要把其中的某條記錄作修改,並返回一個新的對象ui
var id = 'tfe88b26d';
var newsTodos = Object.assign({}, todos, {
[id]: Object.assign({}, todos[id], { completed: !todos[id].completed})
});
console.log( newsTodos );
複製代碼
若是是像上面傳統的方式操做,則須要消耗大量的空間和時間,則能夠使用 immutable.js 完成spa
const { fromJS } = require('immutable');
var newTods = fromJS( todos);
var news = newTods.setIn(['tfe88b26d', 'completed'], true);
console.log( news.toJS() );
複製代碼