繁体   English   中英

使用Lodash或Underscore JS,如何基于同一对象数组中的另一个键值获取特定的键值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM