提问人:za stacka2345 提问时间:11/1/2021 最后编辑:za stacka2345 更新时间:11/1/2021 访问量:1373
如何检查一个值是否正好等于数组中的一个值 [duplicate]
How to check if a value is equal to exactly one value from an array [duplicate]
问:
我有以下数组:
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"
我正在寻找一种更好的方法来遍历这个数组,因为我不知道数组长度。
答:
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
作为演示,我写了一个按表格搜索:persons
name
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
评论
find()