TS / JS-如果对象的属性与数组中的另一个属性相匹配,则从对象数组中获取“值”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TS / JS-如果对象的属性与数组中的另一个属性相匹配,则从对象数组中获取“值”相关的知识,希望对你有一定的参考价值。

问题:

我有一个对象数组。还有我当前正在查看的currentObject。如果两个其他属性匹配,我想从对象数组的属性中获取值。

这里是数组,简化了:

ARRAY = [
  id: 1,
  metadata: author: "Company1"
 ,
 
  id: 2,
  metadata: author: "Company2"
 

这里是对象,简化了:

OBJECT = 
 name: "Something
 templateId: 2

因此,基本上,我想返回metdata.author信息,如果ARRAY.idOBJECT.templateId匹配。

这是我写的代码。

const getAuthorInfo = (connTemplates: ARRAY[], currentConn: ITEM_OBJECT) => 
  connTemplates.find((connTemplate: ARRAY_ITEM_OBJECT) => connTemplate.id === currentConn.templateId);
;

console.log('Author Info:', connection); // This though returns the OBJECT, not the ARRAY_ITEM

关于如何进行这项工作的任何想法?我也尝试在相同的条件下使用filter,但是当我在ReactComponent中调用它时返回了undefined

答案

这是您需要的吗?

const arr = [
  id: 1,
  metadata:  author: "Company1" 
,

  id: 2,
  metadata:  author: "Company2" 
]

const obj = 
  name: "Something",
  templateId: 2




function getAuthorInfo(arr, obj) 
  const arrItem = arr.find(item => item.id === obj.templateId)
  return arrItem.metadata.author


console.log(getAuthorInfo(arr, obj))
另一答案
const arr = [
  id: 1,
  metadata: author: "Company1"
 ,
 
  id: 2,
  metadata: author: "Company2"
 ]

 const obj = 
  name: "Something",
  templateId: 2
 


const result = arr.find(f => f.id == obj.templateId);

console.log(result);

以上是关于TS / JS-如果对象的属性与数组中的另一个属性相匹配,则从对象数组中获取“值”的主要内容,如果未能解决你的问题,请参考以下文章

更改数组中对象的属性

如果属性与另一个数组匹配,则检索数组中的对象

如何使用 Vue.js 为数组(数据)中的所有对象添加属性?

js遍历对象属性

JS中删除对象的某个属性

JS中的内置对象简介与简单的属性方法