例:
var arr = [{name: 'a', age: 23}, {name: 'b', age: 24}]
var newArr = _.enhance(arr, { married : false });
console.log(newArr); // [{name: 'a', age: 23, married : false}, {name: 'b', age: 24, married : false}]
我在寻找的东西做到这一点。请注意,提高中不存在lodash。是否有可能与lodash做到这一点? 如果没有 - 可能增加?
谢谢,
你可能想extend
你的对象的each
。
亩太短排序杀了我的文字游戏,同时使一个很好的点。更新创建一个全新的阵列。
var arr = [{name: 'a', age: 23}, {name: 'b', age: 24}];
var newArr = _.map(arr, function(element) {
return _.extend({}, element, {married: false});
});
如果你想将它添加到库中,
_.enhance = function(list, source) {
return _.map(list, function(element) { return _.extend({}, element, source); });
}
我用ES6语法。我认为这会帮助到u。
var arr = [{name: 'a', age: 23}, {name: 'b', age: 24}];
arr.map((element) => {
return element.married = false;
});
console.log(arr); // [{name: 'a', age: 23, married : false}, {name: 'b', age: 24, married : false}]
使用lodash和ES6箭头符号的解决方案可能会变得非常简短:
const newArr = _.map(arr, o => _.extend({married: false}, o));
注:我使用的对象{married: false}
作为第一个参数,因为改变此对象保持原始数组原封不动。这意味着,但是,这种married
成为结果对象的第一场,但是这可能是不相关的。
该功能lodash具有最接近你想要的是合并:() => ({})
如何与合并工作的,你想要做什么是你需要有相等长度的数组arr中所有看起来像只有细微的差别:
http://lodash.com/docs#merge
如果你尝试这样做:
var arr = [{name: 'a', age: 23}, {name: 'b', age: 24}];
var marriedArr = [{married : false}, {married : false}];
var newArr = _.merge(arr, marriedArr);
console.log(newArr);
然后合并将工作就像CONCAT。
这来得太迟了,它不涉及lodash,但我认为最干净的解决方案,如果你想可变旧数据是用于循环迭代的经典。这样,你会不会有新的阵列加载内存。