如何从JS对象中的数组中获取值

时间:2017-02-13 23:21:27

标签: javascript

我试图从对象中的数组中获取值。

这是数据:

{
    "Order Number":102541029, 
    "Tracking Number":192048236154915,
    "Secondary Tracking":87350125235,
    "Items":[{
     "SKU":"0200-02-01-NP-P-00",
     "QTY":4
    },
    {
     "SKU":"0120-02-01-XP-T-00",
     "QTY":2
    }]
   }

如果我想要,比如第二项的数量(SKU 0120-02-01-XP-T-00),我该如何选择?

我尝试过这样的事情:

var skuQty = datain.items.['0120-02-01-XP-T-00'].['QTY'];

这就是主意,但我显然没有使用正确的语法。这里有什么帮助吗?

  • 杰西

7 个答案:

答案 0 :(得分:1)

首先,选择指定的对象 - 在您的情况下 - data

然后从key对象中选择指定的data - 在您的情况下 - Items

由于Items是一个包含两个对象的数组,因此您必须指定您感兴趣的其中一个。在您的情况下 - 第二个具有索引1

data.Items[1]是一个持有两个位置的对象。您对第二个感兴趣 - 所以您只需键入该键名称QTY即可。

一起添加 - data.Items[1].QTY

var data = {
  "Order Number": 102541029,
  "Tracking Number": 192048236154915,
  "Secondary Tracking": 87350125235,
  "Items": [{
    "SKU": "0200-02-01-NP-P-00",
    "QTY": 4
  }, {
    "SKU": "0120-02-01-XP-T-00",
    "QTY": 2
  }]
};

console.log(data.Items[1].QTY)

答案 1 :(得分:1)

这是滚动数量的方式:

arr[i]

通常,您可以访问一个数组,其索引类似于: `yourObject.yourkey` ,对象可以通过它的键名访问:

array = [1,2,3]

答案 2 :(得分:1)

在JavaScript中,可以使用array[index]访问array = [{ prop: propValue }]

如果您有一个如下所示的数组:obj = { prop: propValue }; array = [ obj ],那么这与propValue几乎相同,因此您需要做的就是array[ 0 ]['prop'] {{1} }。

根据您的具体情况,您需要

datain.Items[1]['SKU'];

现在,你真正要做的是过滤数组项,直到上面的值为"0120-02-01-XP-T-00"

这实际上是对数组进行过滤:

datain.Items.filter( function( obj ){ return obj['SKU'] === "0120-02-01-XP-T-00" } )[0]['QTY']

关键是array.filter( fn )会返回fn( item [, other parameters you don't need to worry about] )true(或真实)的新数组值。此时,您只需要index = 0

中的第一个项目

答案 3 :(得分:0)

这就是你得到它的方式:

Object {Order Number: 102541029, Tracking Number: 192048236154915, Secondary Tracking: 87350125235, Items: Array[2]}
obj.Items[0]
Object {SKU: "0200-02-01-NP-P-00", QTY: 4}
obj.Items[0].QTY



obj =  {
    "Order Number":102541029, 
    "Tracking Number":192048236154915,
    "Secondary Tracking":87350125235,
    "Items":[{
     "SKU":"0200-02-01-NP-P-00",
     "QTY":4
    },
    {
     "SKU":"0120-02-01-XP-T-00",
     "QTY":2
    }]
   };
console.log(obj.Items[0].QTY);




答案 4 :(得分:0)

因为items是一个数组,所以需要选择适当的数组索引,在本例中为1。 例如:

  

var skuQty = datain.items [1] .QTY;

答案 5 :(得分:0)

您可以在回调返回Array.prototype.filter()时使用o.SKU === "0120-02-01-XP-T-00",其中o是迭代中的当前对象使用括号表示法来选择返回数组的索引0处的元素

var QTY = data.Items.filter(function(o) {
            return o.SKU === "0120-02-01-XP-T-00"
          })[0]["QTY"];

您也可以使用解构分配

var [, {QTY}] = data.Items;

答案 6 :(得分:0)

创建一个函数来查找给定SKU的订单商品:

var findOrderItem = function (order, sku) {
  if (order && order.Items) {
    for (var i = 0; i < order.Items.length; i++) {
      if (order.Items[i].SKU == sku) {
        return order.Items[i];
      }
    }
  }
  return null;
};
var myOrder = {
  "Order Number": 102541029,
  "Tracking Number": 192048236154915,
  "Secondary Tracking": 87350125235,
  "Items": [
    {
      "SKU": "0200-02-01-NP-P-00",
      "QTY": 4
    },
    {
      "SKU": "0120-02-01-XP-T-00",
      "QTY": 2
    }
  ]
};
var sku = "0120-02-01-XP-T-00";
var item = findOrderItem(myOrder, sku);
var qty = 0;
if (item) {
  qty = item.QTY;
}
console.log("item qty", qty);