如果我有一个对象数组:
myArray = [
{id:123, name:"abc"},
{id:234, name:"xyz"},
{id:345, name:"pqr"}
]
someValue = 123
someOtherObj = {id: 234}
let matchedObj = this.myArray.find(object=> object.id === somevalue || object.id === someOtherObj.id)
console.log(matchedObj)
输出是每次123,还是123或234?您能解释一下它是如何工作的吗?
答案 0 :(得分:1)
find
在数组中找到第一匹配项。如果 condition1 || condition2
或 condition1
为真,则condition2
为真。 (更具体地说:||
首先评估其左侧操作数,如果该结果为真,则以该真实值作为结果;如果左侧结果为假,则||
评估其右侧-手动操作数,并将该值作为结果。)
因此,对于该样本数据,它将始终与第一个条目匹配,因为它与条件匹配并且位于第二个条目之前(也与条件匹配)。但是,如果条目的顺序不同,id: 234
在id: 123
之前,则会找到一个替代项:
const someValue = 123;
const someOtherObj = {id: 234};
function match(array) {
console.log(array.find(object => object.id === someValue || object.id === someOtherObj.id));
}
match([
{id:123, name:"abc"}, // Finds this one
{id:234, name:"xyz"},
{id:345, name:"pqr"}
]);
match([
{id:345, name:"pqr"},
{id:234, name:"xyz"}, // Finds this one
{id:123, name:"abc"}
]);