我有一个如下所示的数组;
var myArray = {
"cartItems": {"paramA1": 25, "paramA2": 35},
"cartShippingCost": {"paramB1": 4, "paramB2": 152, "paramB3": 536, "paramB4": 56},
"cartNo": 675765,
"cartSpecialRequirements": {"paramC1": 432},
"cartPostage": {"paramD1": 56, "paramD2": 6537},
"cartId": 54,
"tel": 7778798548,
"status": 5465465,
"delivery": 65464646686674
};
var cartItems;
我在myArray上执行循环,找到'key'包含'cart'
的对象for (var key in myArray) {
if (myArray.hasOwnProperty(key)) {
if (key.indexOf('cart') > -1) {
alert(key + " -> " + o[key]);
}
}
}
哪个效果很好。我想要检索对象:
cartNo
和cartId
不是类型结构。答案 0 :(得分:3)
var data = {
"cartItems": {"paramA1": 25, "paramA2": 35},
"cartShippingCost": {"paramB1": 4, "paramB2": 152, "paramB3": 536, "paramB4": 56},
"cartNo": 675765,
"cartSpecialRequirements": {"paramC1": 432},
"cartPostage": {"paramD1": 56, "paramD2": 6537},
"cartId": 54,
"tel": 7778798548,
"status": 5465465,
"delivery": 65464646686674
}
var cartObjects = [];
for(var k in data){
var v = data[k];
if(v && typeof v === "object" && k.indexOf("cart") !== -1 && data.hasOwnProperty(k)){
cartObjects.push(v);
}
}
console.log(cartObjects)
答案 1 :(得分:2)
您可以使用typeof(var)
检查变量是否是对象(您所说的结构)。在你的情况下,你可以在你的循环中做这样的事情:
if (typeof(myArray[key]) == 'object')
{
// do something
}
希望它有所帮助!
答案 2 :(得分:2)
您只需要首先过滤包含“cart”的键的对象,并引用“object”类型的属性。然后将它们映射到引用的对象。这将产生一个对象数组。
var cartItems = Object.keys(myArray)
.filter(key => {
return key.indexOf('cart') > -1 && typeof myArray[key] === 'object';
})
.map(key => {
return myArray[key];
});
答案 3 :(得分:0)
你可以这样做
Formula Error: Unexpected operator '='