如果将对象存储在数组中,是否可以从数组中查看/检索对象的名称?

时间:2019-09-08 02:00:10

标签: javascript

背景:在下面的简化数据结构中,访问单个项目及其属性非常简单。例如,值 Volkswagon 易于访问。

let car = {};
let truck = {};

car.one = 'Volkswagon';
car.two = 'Toyota';

truck.one = 'Dakota';
truck.two = 'Tacoma';

let vehicleArray = [car, truck];

console.log(vehicleArray[0].one);  //Volkswagon

问题:但是可以访问存储在数组中的对象的名称吗?在这种情况下,值 car 卡车。我不确定如何将它们从阵列中取出。

下面的代码返回对象内部的属性和值,而不是对象的名称。

console.log(vehicleArray[0]); // { one: 'Volkswagon', two: 'Toyota' }

2 个答案:

答案 0 :(得分:-1)

您可以map像这样遍历数组以检索所有值:

let car = {};
let truck = {};

car.one = 'Volkswagon';
car.two = 'Toyota';

truck.one = 'Dakota';
truck.two = 'Tacoma';

let vehicleArray = [car, truck];

vehicleArray.map(({ one, two }) => console.log(one, two))

或者可以filter获取特定值:

let car = {};
let truck = {};

car.one = 'Volkswagon';
car.two = 'Toyota';

truck.one = 'Dakota';
truck.two = 'Tacoma';

let vehicleArray = [car, truck];

console.log(vehicleArray.filter(item => item === truck)[0].one)

这可以通过检查object equality来实现。由于truckvehicleArray[1]引用了同一对象。

答案 1 :(得分:-2)

如果将对象存储在数组中,是否可以从数组中查看/检索对象的名称?不,你不能...

如果使用名称包装对象并将其推入数组,则可以重新获得名称

let car = {};

let truck = {};

car.one = 'Volkswagon';

car.two = 'Toyota';

truck.one = 'Dakota';

truck.two = 'Tacoma';

vehicleArray = [{car}, {truck}];

vehicleArray.map(v => console.log(Object.keys(v)[0]));