我有一个对象数组:
(7) [{…}, {…}, {…}, {…}, {…}, {…}, {…}]
和我要在此对象数组内查找的id
值。
id = "c2a6e78d2bc34cffb08d6e17a5631467"
然后使用这个id
,我想将id
与我所拥有的object.createdAt
相匹配的对象返回给我。之后,我只是想获取该对象的其他属性,例如.map
。
我的问题是:是否可以在此数组上使用id
,然后使用此id
向我返回包含并匹配此map
的一个对象?到目前为止,我已经使用过filter
和$inputData = @"
"Name","FreeSpaceGB"
"ABC-vol001","1474.201"
"ABC-vol002","2345.437"
"ABC-vol003","3147.135"
"ABC-volDAV","4147.135"
"@ | ConvertFrom-Csv
$inputData |
Where-Object { $_.Name -match '-vol[\d]+' } |
Sort-Object { [Int] $_.FreeSpaceGB } -Descending |
Select-Object -First 1
,但也许我使用的是错误的方式...
答案 0 :(得分:5)
使用Array.find()
:
var myDesiredObject = myData.find(element => element.id == myDesiredId);
答案 1 :(得分:3)
是否可以在此数组上使用.map,然后使用此ID 返回给我一个包含并匹配此ID的对象?
否,因为map
创建一个新数组,其结果是在上调用提供的函数 调用数组中的每个元素
在这种情况下,它将创建一个具有属性createdAt
的数组,而不是具有所有属性的对象(包括必须检查的id
)。因此,您无法基于id
属性拾取正确的对象。
请改为使用find
,
返回满足以下条件的数组中第一个元素的值 提供测试功能。否则返回undefined
赞:
var obj = array.find(o => o.id === "c2a6e78d2bc34cffb08d6e17a5631467");
现在在obj
中,您拥有id
等于c2a6e78d2bc34cffb08d6e17a5631467
的对象。您可以检查对象是否不是undefined
(找到),然后根据需要访问其属性。
console.log(obj ? obj.createdAt : "not found");
var array = [{
id: "c2a6e78d2bc34cffb08d6e17a5631467",
createdAt: '2017-01-02'
},
{
id: "some-other-id",
createdAt: '2017-01-03'
},
{
id: "some-other-id-2",
createdAt: '2017-01-03'
},
];
var obj = array.find(o => o.id === "c2a6e78d2bc34cffb08d6e17a5631467");
console.log(obj ? obj.createdAt : "not found");