我有一个包含很多对象的数组,如下所示:
queryString
现在,我希望使用obj = {name: 'Hello', isUpdated:false};
将lodash
的所有isUpdated
变量分配到false
。
我一直在查看他们的文档,发现:
true
但是,我不太确定这是我需要的。也许我需要结合两种不同的方法?
我希望你们中的一些人知道,谢谢。
答案 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;
vanilla JS替代方案是将 Array.prototype.map() 与 Object.assign()
一起使用var result = array.map(v => Object.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 = array.map(v => Object.assign({}, v, { isUpdated: true }));
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
&#13;
答案 1 :(得分:0)
正如@Tushar在评论中所说,如果你是一个合理的现代浏览器,你实际上并不需要Lodash,数组对象拥有它自己的map
函数&# 39; ll做技巧(如果有的话,Lodash iirc在引擎盖下使用它)。
无论如何,要回答你的Lodash,我也会使用_.map()
:
_.map(arr, (o) => { o.isUpdated = true; return o});