![](/img/trans.png)
[英]Javascript ES5: How to Group By a key and create Sub objects from a flat array of key-value objects without using Lodash or Underscore
[英]Using Lodash or Underscore JS , how do I obtain a specific key value based on another key value within the same objects array
这是我正在使用的数据:
myData =
[ { sn: '103261101',
status: 1,
qty: '189'
},
{ sn: '106009801',
status: 1,
qty: '12'
}
];
我正在遍历另一个数据数组,我想将正确的数量与我也在推送数据的新数组相关联。 它需要针对sn查找数据。
product.push({
'identifier' : dataJSON.msg[z].sku,
'size' : dataJSON.msg[z].size,
'quantity' : <Here is where I want to do a lodash / underscore find statement>
});
例如,Easy 1-liner查看myData并根据匹配的sn存储数量。 在这种情况下,循环内的dataJSON.msg [z] .sku与将用于myData中的sn值相同。
您可以使用find
获得正确的项目,然后仅获取该项目的qty
属性。
_.find(myData, (item) => item.sn === dataJSON.msg[z].sku).qty
这是与lodash一起使用的jsfiddle: https ://jsfiddle.net/vzwst9o4/
上面的代码是此的简写:
var matchingItem = _.find(myData, function (item) {
item.sn === dataJSON.msg[z].sku
});
matchingItem.qty
它在lodash和下划线中应该起作用,因为它们的_.find
函数起作用。 您也可以使用Javascript find
作为其他答案,但是使用lodash或下划线(最好是在其他操作中使用lodash或下划线的情况)可能会更好,因为这样可以确保跨浏览器的兼容性。
考虑以下具有Array.prototype.find()函数的Ecmascript6解决方案:
product.push({
'identifier' : dataJSON.msg[z].sku,
'size' : dataJSON.msg[z].size,
'quantity' : '' // default value, cause we can't refer to the 'identifier' key while initializing the object via literal
});
var lastPos = product.length - 1; // the last `product` position
if (o = myData.find((o) => o.sn === product[lastPos].identifier)) {
product[lastPos].quantity = o.qty;
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.