Javascript 从嵌套对象检索数据
我只有这个对象示例:Javascript 从嵌套对象检索数据,javascript,Javascript,我只有这个对象示例: { id: 301 payload: { 1: { house_no: 1234, city: London }, 2: { house_no: 0000 city: Paris } } } 我只需要为1和2提取房屋号和城市号。 我曾经尝试过这样快速浏览:*传递给循环的地址就是上面的对象 let item = []; for(let x in address){ item.push(item[x]); } console.lo
{
id: 301
payload: {
1: {
house_no: 1234,
city: London
},
2: {
house_no: 0000
city: Paris
}
}
}
我只需要为1和2提取房屋号和城市号。
我曾经尝试过这样快速浏览:*传递给循环的地址就是上面的对象
let item = [];
for(let x in address){
item.push(item[x]);
}
console.log('Address', item.city);
这给了我一个包含未定义元素的数组:
[
0: undefined
1: undefined
]
你们能帮我检索每个1,2:house\u no和city所需的数据吗
Object.values(address.payload).map(({ house_no, city }) => ({ house_no, city }));
这将遍历address.payload
中的每个值,并返回带有house\u no
和city
的对象数组
const地址={
id:301,
有效载荷:{
1: {
房号:1234,
城市:“伦敦”
},
2: {
房号:0000,
城市:“巴黎”
}
}
};
const result=Object.values(address.payload).map({house_no,city})=>({house_no,city}));
控制台日志(结果)代码>您可以直接访问它,如下所示
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);
您可以直接访问对象属性,而无需循环:
<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>
var obj={
id:301,
有效载荷:{
1: {
房号:1234,
城市:“伦敦”
},
2: {
房号:0000,
城市:“巴黎”
}
}
}
var address1=obj.payload[1]。房屋号+“”+obj.payload[1]。城市;
var address2=obj.payload[2]。房屋号+“”+obj.payload[2]。城市;
为什么要将项[x]
推送到项
数组中?项。推(项[x])代码>?当然,您将得到未定义的。不要推送item[x]
。您的对象中缺少几个逗号。嘿,我非常喜欢这个解决方案,我添加到的原因是:让item=[];是因为我想在html中映射它。我对Object.values返回数组的理解是正确的,这就是为什么你可以通过map来跟踪它…?是的Object.values
返回一个数组,这样你就可以调用.map()
,它反过来也会返回一个数组。看见