sow*_*dri 34 javascript underscore.js lodash
例:
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}]
Run Code Online (Sandbox Code Playgroud)
我正在寻找能做到这一点的事情.注意,lodash中不存在增强功能.用lodash可以做到这一点吗?
如果不是 - 可能添加?
谢谢,
Mat*_*ics 52
你可能想要extend each你的对象.
在制作一个优秀的观点时,mu太短暂了.更新以创建一个全新的数组.
var arr = [{name: 'a', age: 23}, {name: 'b', age: 24}];
var newArr = _.map(arr, function(element) {
return _.extend({}, element, {married: false});
});
Run Code Online (Sandbox Code Playgroud)
如果要将其添加到库中,
_.enhance = function(list, source) {
return _.map(list, function(element) { return _.extend({}, element, source); });
}
Run Code Online (Sandbox Code Playgroud)
Jan*_*ara 16
我使用ES6语法.我想这会对你有所帮助.
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}]
Run Code Online (Sandbox Code Playgroud)
使用lodash和ES6箭头表示法解决方案可能变得非常短:
const newArr = _.map(arr, o => _.extend({married: false}, o));
Run Code Online (Sandbox Code Playgroud)
注意:我使用该对象{married: false}作为第一个参数,因为改变此对象会使原始数组保持原样.然而,这意味着它married成为结果对象中的第一个字段,但这可能不相关.
const arr = [{name: 'a', age: 23}, {name: 'b', age: 24}, {name: 'c', age: 25}];
const newArr = arr.map(el => ({ ...el, married: false }));
console.log(newArr);
// [{age: 23, married: false, name: 'a'}, {age: 24, married: false, name: 'b'}, {name: 'c', age: 25, married: false}]
Run Code Online (Sandbox Code Playgroud)
注意:返回对象字面量的箭头函数需要用括号将对象包裹起来,例如, () => ({})