检查数组是否具有相同的值

checking array if has same value

通过编码学习,这里我有一个对象数组(数据)和 nodeId,它是数字,我想检查数组 'target' 是否与 nodeId 具有相同的值然后 'return',我应该使用 map()、find()、filter(),我怎么知道该使用哪个? 英语不是我的母语所以可能会出错

数据:

  const Test = '7'
const nodeId = parseInt(Test);

  
  const data = [
    { target: 4, name: "usa" },
    { target: 7, name: "England" },
    { target: 3, name: "Japan" }
  ];
  
  
   if (check if data and nodeId both have same value then) {
    return;
  }

.some()大概就是你要用的

const check = data.some((elem) => elem.target === nodeId) 
console.log(check) // true if exist or false if it doesnt
if(check) {
  // reached if it exist
}

check 如果不存在则为 false,如果存在则为 true。一旦找到匹配项,它将停止 运行,而 .filter() and .map() would run the entire array. If you also want to get the element then you should use .find() 相反。

你的问题有点含糊,但我会尽量简单地回答。

should i use map(), find(), filter(), how should i know which to use ?

这取决于您假设的函数或代码需要什么,例如,如果您想要与您的值相匹配的项目,那么您将使用 .find(),因为它 return 的单个值基于一个条件。

类似地,如果您希望 return 一个基于符合条件的项目的数组,您可以使用 .filter(),如果您只是想检查您的值是否存在于数组中,则相同,你可以使用 .some.every.

在你的代码示例中,我假设你想要 return 与你的 nodeId 匹配的特定值,根据这个假设,这是如何工作的

function getDataBasedOnNodeId (dataObjects, matchValue) { 
 return dataObjects.find(item => item.target === Number(matchValue))
}

const data = [
    { target: 4, name: "usa" },
    { target: 7, name: "England" },
    { target: 3, name: "Japan" }
];
  

return getDataBasedOnNodeId(data, 7)