lodash在数组中的每个对象中分配一个字段

时间:2016-07-13 11:06:41

标签: javascript arrays lodash

我有一个包含很多对象的数组,如下所示:

queryString

现在,我希望使用obj = {name: 'Hello', isUpdated:false}; lodash的所有isUpdated变量分配到false

我一直在查看他们的文档,发现:

true

但是,我不太确定这是我需要的。也许我需要结合两种不同的方法?

我希望你们中的一些人知道,谢谢。

2 个答案:

答案 0 :(得分:4)

如果您不想改变源数组,那么您可以将 _.assign() _.map() 一起使用。

var result = _.map(array, v => _.assign({}, v, { isUpdated: true }));



var array = [{
  name: 'hoo',
  isUpdated: false
}, {
  name: 'yeah',
  isUpdated: false
}, {
  name: 'Hello',
  isUpdated: false
}, {
  name: 'Hello',
  isUpdated: false
}, {
  name: 'Hello',
  isUpdated: false
}, {
  name: 'yeahv',
  isUpdated: false
}];

var result = _.map(array, v => _.assign({}, v, { isUpdated: true }));

document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
&#13;
<script src="https://cdn.jsdelivr.net/lodash/4.13.1/lodash.min.js"></script>
&#13;
&#13;
&#13;

vanilla JS替代方案是将 Array.prototype.map() Object.assign()

一起使用
var result = array.map(v => Object.assign({}, v, { isUpdated: true }));

&#13;
&#13;
var array = [{
  name: 'hoo',
  isUpdated: false
}, {
  name: 'yeah',
  isUpdated: false
}, {
  name: 'Hello',
  isUpdated: false
}, {
  name: 'Hello',
  isUpdated: false
}, {
  name: 'Hello',
  isUpdated: false
}, {
  name: 'yeahv',
  isUpdated: false
}];

var result = array.map(v => Object.assign({}, v, { isUpdated: true }));

document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
&#13;
&#13;
&#13;

答案 1 :(得分:0)

正如@Tushar在评论中所说,如果你是一个合理的现代浏览器,你实际上并不需要Lodash,数组对象拥有它自己的map函数&# 39; ll做技巧(如果有的话,Lodash iirc在引擎盖下使用它)。

无论如何,要回答你的Lodash,我也会使用_.map()

_.map(arr, (o) => { o.isUpdated = true; return o});