我只有这个对象示例:
{
id: 301
payload: {
1: {
house_no: 1234,
city: London
},
2: {
house_no: 0000
city: Paris
}
}
}
我只需要提取1和2的house_no and city
。
我试图像这样遍历:*传递给循环的地址是上面的对象
let item = [];
for(let x in address){
item.push(item[x]);
}
console.log('Address', item.city);
这给了我带有未定义元素的数组:
[
0: undefined
1: undefined
]
你们能否请我帮我检索每个1,2所需的数据:house_no and city
答案 0 :(得分:2)
Object.values(address.payload).map(({ house_no, city }) => ({ house_no, city }));
此操作遍历address.payload
中的每个值,并返回包含house_no
和city
的对象数组。
const address = {
id: 301,
payload: {
1: {
house_no: 1234,
city: 'London'
},
2: {
house_no: 0000,
city: 'Paris'
}
}
};
const result = Object.values(address.payload).map(({ house_no, city }) => ({ house_no, city }));
console.log(result);
答案 1 :(得分:0)
您可以按如下所示直接访问它,
const {1: obj1, 2: obj2} = address.payload;
在这里,javascript将解构有效负载并将对象1分配为1,将对象2分配为2。在您提供的对象中,缺少一些逗号和引号。因此,我也在下面添加了该内容。现在,obj1和obj2将具有1和2个对象,您可以在其中轻松提取所需的数据。
let address = {
id: 301,
payload: {
1: {
house_no: 1234,
city: "London"
},
2: {
house_no: 0000,
city: "Paris"
}
}
};
const {1: obj1, 2: obj2} = address.payload;
console.log(obj1);
console.log(obj1.city);
console.log(obj1.house_no);
答案 2 :(得分:0)
您可以直接访问对象属性而无需循环:
<script>
var obj = {
id: 301,
payload: {
1: {
house_no: 1234,
city: "London"
},
2: {
house_no: 0000,
city: "Paris"
}
}
}
var address1 = obj.payload[1].house_no + " " + obj.payload[1].city;
var address2 = obj.payload[2].house_no + " " + obj.payload[2].city;
</script>