使用值与对象数组进行比较以在该对象内返回不同的值?

时间:2018-08-20 21:37:48

标签: javascript arrays reactjs

我有一个对象数组:

(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 ,但也许我使用的是错误的方式...

2 个答案:

答案 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");