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

时间:2019-05-29 23:11:54

标签: javascript arrays object ecmascript-6

了解如何访问属性值。

如果我有

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

我如何只用console.log记录第二个对象的 value ?即“网站开发者”。

我知道如何使用.find()来控制台记录整个键值对(或对象):

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

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

但是这对的呢?

6 个答案:

答案 0 :(得分:3)

您可以通过索引在给定位置访问数组中的项。在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);

答案 1 :(得分:2)

您可以破坏值:

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

答案 2 :(得分: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])
    }

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

答案 3 :(得分:1)

只需在其末尾添加属性访问权限即可。

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

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

答案 4 :(得分: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));

答案 5 :(得分: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)