繁体   English   中英

如何检索对象名称的Java Script数组

[英]How to retrieve Java Script Array of Objects names

我正在尝试检索汽车名称(例如“ Ford feigo”,“ Nissan”,“ Duster”)。 而且我正试图通过carsinfo["0"].name来检索它们以获取汽车名称,但作为回报,它给了我未定义的信息。

var carsinfo =    {"cars": [
            {
                "Ford feigo": {
                    "milege": "11",
                    "color": "White",
                    "electric": yes
                }
            },
            {
                "Nissan": {
                    "milege": "33",
                    "color": "Black",
                    "electric": 74
                }
            },
            {
                "Duster": {
                   "milege": "26",
                    "color": "RED",
                    "electric": 87
                }
            }
        ],
    };

您可以使用Object.keysArray#map检索它们。

 let carsinfo = { "cars": [{ "Ford feigo": { "milege": "11", "color": "White", "electric": 'yes' } }, { "Nissan": { "milege": "33", "color": "Black", "electric": 74 } }, { "Duster": { "milege": "26", "color": "RED", "electric": 87 } } ], }; let cars = [].concat(...carsinfo.cars.map(Object.keys)); console.log(cars); 

汽车名称是对象中的键,要获取它们,您可以映射周围的数组,然后在新数组中获取键名,您可以在其中基于索引访问每个键

 var carsinfo = { "cars": [{ "Ford feigo": { "milege": "11", "color": "White", "electric": "yes" } }, { "Nissan": { "milege": "33", "color": "Black", "electric": 74 } }, { "Duster": { "milege": "26", "color": "RED", "electric": 87 } }], }; var names = carsinfo.cars.map( k => Object.keys(k).shift()); console.log(names[0]) 

您可以对Array#reduce使用经典方法:

 var carsinfo = { cars: [{ "Ford feigo": { milege: "11", color: "White", electric: true } }, { Nissan: { milege: "33", color: "Black", electric: 74 } }, { Duster: { milege: "26", color: "RED", electric: 87 } }] }, cars = carsinfo.cars.reduce((r, o) => r.concat(Object.keys(o)), []); console.log(cars); 

对象carsinfo没有名为name的键。 这就是您undefined的原因。 您将需要重组数组并执行以下操作:

const cars = Object.values(carsinfo.cars).map((val) => ({ name: Object.keys(val)[0] }));

console.log('name: ', cars[0].name);

这不是一个好的解决方案,因为它仅对特定的用例有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM