我试图从对象中的数组中获取值。
这是数据:
{
"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'];
这就是主意,但我显然没有使用正确的语法。这里有什么帮助吗?
答案 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);