在JavaScript中访问数组内对象属性的值

5
学习如何访问属性值。
如果我有以下代码:
let object1 = [{name: "HappyHands31"}, {job: "website developer"}, {city: "Chicago"}];

如何仅使用console.log打印第二个对象的? 即“website developer”。

通过使用.find(),我知道如何打印整个键值对(或对象):

let object1 = [{name: "HappyHands31"}, {job: "website developer"}, {city: "Chicago"}];

console.log(object1.find(function(element) {
    return element.hasOwnProperty("job");
}
));

但是这对键值对中的怎么办呢?


为什么你要将每个属性放在自己的对象中,而不是像 {name: "HappyHands31", job: "website developer", ...} 这样的单个对象? - Barmar
@Barmar 这只是在编程挑战中呈现的方式... - HappyHands31
6个回答

4

您可以通过索引在数组中访问指定位置的项目。在JavaScript中,数组的索引从0开始:myArray[0]。要访问返回对象的属性,请使用点表示法:myArray[0].myProperty

let object1 = [{name: "HappyHands31"}, {job: "website developer"}, {city: "Chicago"}];

console.log(object1[1].job);

对于您给出的示例,也可以通过附加属性名称(使用点表示法)来实现:

let object1 = [{name: "HappyHands31"}, {job: "website developer"}, {city: "Chicago"}];

console.log(object1.find(function(element) {
    return element.hasOwnProperty("job");
}).job);


抱歉,我编辑了“名称”和“年龄”的值:)在第二个片段中。 - HappyHands31

2
你可以解构这个值:

最初的回答

let object1 = [{name: "HappyHands31"}, {job: "website developer"}, {city: "Chicago"}];
const { job: res } = object1.find(({ job }) => job);
console.log(res);


1
一种解决方案是将每个对象的键存储在某个地方,然后按照通常的方式访问对象。

    let object1 = [{name: "HappyHands31"}, {job: "website developer"}, {city: "Chicago"}];
    
    for(let i=0; i<3; i++){
       name = Object.keys(object1[i]);
       console.log(object1[i][name])
    }

在这种情况下,我假设您不知道要访问的键的名称。

1
只需要在其末尾添加一个属性访问即可。

let object1 = [{name: "HappyHands31"}, {job: "website developer"}, {city: "Chicago"}];

console.log(object1.find(function(element) {
    return element.hasOwnProperty("job");
}).job);


1

首先,你的object1是对象数组,而不是对象。

但有一种方法可以实现你想要的效果。

const fun = (arr, prop) => arr.find((obj) => obj.hasOwnProperty(prop))[prop];

const object1 = [{name: 'HappyHands31'}, {job: 'website developer'}, {city: 'Chicago'}];

const property = 'job';

console.log(fun(object1, property));


1
如果数组中的对象结构相同,则可以像这样将对象数组展平,并直接调用它作为对象键。

let object1 = [{name: "HappyHands31"}, {job: "website developer"}, {city: "Chicago"}];
let flatten = {}
object1.map((currentValue, index) => {
  let key = Object.keys(currentValue)  
  flatten[key] = currentValue[key]
});
console.log(flatten)
console.log(flatten.job)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接