使用map方法迭代修改原有对象
var myObject = { 'a': 1, 'b': 2, 'c': 3 };
Object.keys(myObject).map(function(key, index) {
myObject[key] *= 2;
});
console.log(myObject);
// => { ‘a’: 2, ‘b’: 4, ‘c’: 6 }
使用 for … in 迭代修改原有对象:
var myObject = { 'a': 1, 'b': 2, 'c': 3 };
for (var key in myObject) {
if (myObject.hasOwnProperty(key)) {
myObject[key] *= 2;
}
}
console.log(myObject);
// { ‘a’: 2, ‘b’: 4, ‘c’: 6 }
迭代后返回一个新的对象
var myObject = { ‘a’: 1, ‘b’: 2, ‘c’: 3 };
// 返回一个针对每个键值使用了函数mapFn的新对象
function objectMap(object, mapFn) {
return Object.keys(object).reduce(function(result, key) {
result[key] = mapFn(object[key])
return result
}, {})
}
var newObject = objectMap(myObject, function(value) {
return value * 2
})
Array.prototype.reduce 将合并之前的值与当前值并在最后返回一个修改后的对象,初始对象是一个空对象{},在每一次迭代后一个修改后的键值对被加入到初始对象中去。
console.log(newObject);
// => { 'a': 1, 'b': 4, 'c': 6 }
console.log(myObject);
// => { 'a': 1, 'b': 2, 'c': 3 }