通过键名从数组中获取对象

时间:2019-01-14 16:13:33

标签: javascript arrays object

我想通过键名从数组中获取一个对象。

数组:

let input = [
    id1: {},
    id2: {},
    id3: {},
]

console.log(input);

我只想要带有键id2的对象。如何从数组中过滤对象?

3 个答案:

答案 0 :(得分:1)

正如@ritaj所说,在您提供的代码中,这是无效的语法,我将假设您的意思是通过使用find函数来实现类似的事情。但是,如果要查找多个对象,则始终可以使用filter函数,如在第二个示例中看到的那样,该函数将返回一个同时包含属性为id2和{{ 1}}。

id3

var array = [
  {id1: {}},
  {id2: {}},
  {id3: {}},
];

console.log(array.find(({id2}) => id2));

答案 1 :(得分:0)

数组仅具有数字索引。

如果只需要一个数组项,并且知道索引:

var myArray = [{a: 'a'}, {b: 'b'}]
var iWantedIndex = 1;
var myObject = {};
myObject[iWantedIndex] = myArray[iWantedIndex];

如果您需要更复杂的检查或数组中的一个以上元素,则可以使用Array.prototype.forEach或经典的 for循环

答案 2 :(得分:0)

首先,它不是有效的JS对象或JSON字符串。

如果它是一个对象,则应定义如下。

{
    "id1": {
        "some": "property"
    },
    "id2": {
        "some": "property"
    },
    "id3": {
        "some": "property"
    }
}

我们称之为parentObject

在这种情况下,您可以仅通过属性访问所需的对象。

parentObject.id2 
or
parentObject['id2']

如果这是一个数组,则应定义如下。

  [{
        "id1": {
            "some": "property"
        }
    },
    {
        "id2": {
            "some": "property"
        }
    },
    {
        "id3": {
            "some": "property"
        }
    }
  ]

我们称之为parentArray。 您可以使用以下代码找到它,例如

var targetObject= parentArray.find(x => x.id2 !== undefined);

这将返回第一个匹配项(如果存在)。