如何检查一个值是否正好等于数组中的一个值 [duplicate]

How to check if a value is equal to exactly one value from an array [duplicate]

提问人:za stacka2345 提问时间:11/1/2021 最后编辑:za stacka2345 更新时间:11/1/2021 访问量:1373

问:

我有以下数组:

const person = [
      { name: "John", surname: "Doe" },
      { name: "Jane", surname: "Williams" }];

我想检查匹配项是否只等于数组中的一个名称。 我做了以下工作:

match === person[0].name || match === person[1].name || match === person[3].name ? "Do something" : "Blank"

我正在寻找一种更好的方法来遍历这个数组,因为我不知道数组长度。

JavaScript 数组迭代 相等

评论

0赞 Craques 11/1/2021
您可以尝试使用该 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/ 的 find() 方法...
0赞 pilchard 11/1/2021
您的问题不清楚,您是要返回匹配的第一个项目,还是仅当它是数组中唯一匹配的项目时才返回? 会做前者,但不能保证后者。find()
0赞 Corrl 11/1/2021
想想这个问题的一点,在链接的“已经在这里回答”的帖子中缺少“等于正好一”。使用 .find() 不会告诉你这一点,它只会返回第一个结果。要检查是否只有一个,请使用 .filter() 并检查搜索结果数组的长度

答:

0赞 user16649222 11/1/2021 #1
person.forEach(function(item){
if(match === item.name){
// your logic goes here
}
})

这将遍历数组中的每个对象(“{}”)并执行一个函数(您也可以使用箭头函数)。然后,该函数检查您的“match”值是否等于它运行的数组中每个对象(由“item”引用)中的“name”键。

您可以查看其他数组方法。

0赞 Dimitri Kopriwa 11/1/2021 #2

您可以使用 Array.prototype.find 在对象数组中查找。

该方法返回所提供数组中满足所提供测试函数的第一个元素的值。如果没有值满足测试函数,则返回。find()undefined

来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find

作为演示,我写了一个按表格搜索:personsname

const persons = [
  { name: "John", surname: "Doe" },
  { name: "Jane", surname: "Williams" }
]

function bindEvent() {
  const form = document.forms['find-by-name-form']
  form.addEventListener('submit', onSubmit, true)
}

function onSubmit(event) {
  event.preventDefault()
  const { name } = event.target
  const person = findPersonByName(name.value)
  alert(person ? `${person.name} ${person.surname}` : 'no result')
  person && console.log(person)
}

function findPersonByName(name) {
  return persons.find((item) => item.name === name)  
}

window.onload = bindEvent
<form name="find-by-name-form">
  <label for="name">Find by name:</label>
  <input name="name" />
  <button>Search person</button>
</form>

0赞 Sandeep Pal 11/1/2021 #3

查找匹配值数组索引的最佳解决方案 const 名称 = 'sandeep'

const 匹配 = persons.findindex

((人) => person.name === 姓名)

0赞 Joshua Folorunsho 11/1/2021 #4

你可以使用 find 方法,find 方法接受回调函数。

所以你可以做

const checkIfNameExists = (eachPerson) => eachPerson.name === match;

person.find(checkIfNameExists)

如果名称存在,则返回对象。否则,它将返回 undefined。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find