Lodash:如何向集合中的所有值添加新字段
Lodash: How to add new field to all values in collection
示例:
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}]
我正在寻找一些东西来做到这一点。请注意,增强在洛达什中不存在。可以用洛达什做到这一点吗?
如果不是 - 可能添加?
谢谢
你可能想要
extend
each
你的对象。
Mu太短了,有点扼杀了我的文字游戏,同时提出了一个很好的观点。更新以创建一个全新的阵列。
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); });
}
使用 lodash 和 ES6 箭头符号,解决方案可能会变得非常短:
const newArr = _.map(arr, o => _.extend({married: false}, o));
注意:我使用对象{married: false}
作为第一个参数,因为改变这个对象会使原始数组保持不变。但是,这意味着married
成为结果对象中的第一个字段,但这可能无关紧要。
我使用 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}]
ES6 with Map and Spread
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}]
注意:重新定义对象文字的箭头函数需要用括号将对象括起来,例如() => ({})
lodash 最接近你想要的函数是 merge: http://lodash.com/docs#merge
合并的工作方式和您想要执行的操作之间的唯一细微区别是,您需要有一个相同长度的数组来arr所有看起来像:
var arr = [{name: 'a', age: 23}, {name: 'b', age: 24}];
var marriedArr = [{married : false}, {married : false}];
var newArr = _.merge(arr, marriedArr);
console.log(newArr);
如果您尝试执行以下操作:
var newArr = _.merge(arr, {married : false});
然后合并将像 concat 一样工作。
这来得晚了,它不涉及 lodash,但我认为如果您希望旧数据可变,最干净的解决方案是使用经典的 for 循环迭代。这样,您就不会用新阵列加载内存。
相关文章:
- 使用 WYIHTML5 添加包含 gem 的新字段nested_form
- 在商店定位器谷歌地图api中的商店面板中添加新字段
- Lodash:如何向集合中的所有值添加新字段
- 在选择(rails_admin)时更改时在模态窗口中添加新字段
- 向文档 mongodb 添加新字段
- 将字段添加到新的 JavaScript 数组副本
- 如何使用angularjs多次单击按钮时添加新字段
- 在JS添加新字段后,cakephp表单未正确提交
- “嵌套模型表单”可以正确添加新字段,但 coffeescript 行为不会影响页面上现有字段等新字段
- 动态添加新字段后提交表单
- 如何在当前表单中动态添加新字段
- 如果我选择了一个特定的单选按钮,如何在表单中添加新字段
- 动态添加新字段将重置先前字段中的值
- 通过按回车键而不是逗号向标记字段添加新值
- 我需要动态地向表单添加更多字段,并使新字段的输入值也发生变化
- 如何添加多个表单字段(一次)与'添加新字段'按钮
- 动态添加&任意次数地删除表单中相同的新字段
- 如何在Meteor中编辑和添加新字段到当前用户
- 创建一个“删除字段”按钮,在动态添加新字段后
- 流星:在点击事件上添加新字段