背景:在下面的简化数据结构中,访问单个项目及其属性非常简单。例如,值 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' }
答案 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来实现。由于truck
和vehicleArray[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]));