我想通过键名从数组中获取一个对象。
数组:
let input = [
id1: {},
id2: {},
id3: {},
]
console.log(input);
我只想要带有键id2
的对象。如何从数组中过滤对象?
答案 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);
这将返回第一个匹配项(如果存在)。