我试图了解如何遍历这个简单的数组。
var data = [{"blahh":"hi","blah2":"333","third":"920","fourth":"800"}];
我想要完成的是,附加一个对象,它是某些键的总和(&#39;第三&#39;和&#39;第四&#39;)...结果数据为:< / p>
var data = [{"blahh":"hi","blah2":"333","third":"920","fourth":"800", "sum": "1720"}];
我想象&#39; lodash&#39;图书馆能够巧妙地完成这一任务。我无法弄清楚如何解决这个问题。我知道这是一个新手问题,但也许回答它可能有助于一些灵魂更好地理解lodash。
答案 0 :(得分:1)
不需要库来执行此操作......代码看起来可能比使用本机方法更复杂
data.forEach(item){
item.sum = (+item.third || 0) + (+item.fourth || 0);
});
答案 1 :(得分:1)
如前所述 - 你不需要为此付出代价。您正在查看map函数以迭代数组并返回一个新数组(在这种情况下是一个返回带有sum属性的对象的新数组的对象数组)并reduce以迭代所有所需的键和求和他们的价值观例如:
//If you want to treat numbers as numbers then use numbers.
//Some answers here are coercing strings with + - however this will result in NaN on non coerceable strings -ie 'hello',
//which will cause unexpected errors for you later (and typeof NaN is number)
var data = [{"blahh":"hi","blah2":333,"third":920,"fourth":800}];
function returnNewArrayWithSums(keys, array) {
return array.map(obj => {
obj.sum = keys.reduce((sum, key) => typeof obj[key] === 'number' ? obj[key] + sum : sum, 0);
return obj;
});
}
returnNewArrayWithSums(['third', 'fourth'], data);
编辑添加 - 这个答案是给你一个用map / reduce的用例 - 理想情况下,你不必指定数字键,并使这个函数对于任何具有k / v对象的数组更通用你想要求和的数字对
答案 2 :(得分:0)
你有一个对象的数组 - 我认为你不想这样做。数组中没有键:值对(实际上它们在JavaScript中有效但忽略了它)。它们是一个索引的值列表。你可能想做这样的事情:
// notice im not putting the integer values in quotes
var data = {'blah':'hi', 'blah2':333, 'third':920, 'fourth':800 };
data.sum = data.third + data.fourth;
这将增加一笔&#39;字段到您的对象的值为第三和第四的总和。这是你想要做的吗?