OR运算符如何在javascript或打字稿中的find函数中工作?

时间:2019-04-04 10:36:02

标签: typescript

如果我有一个对象数组:

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?您能解释一下它是如何工作的吗?

1 个答案:

答案 0 :(得分:1)

find在数组中找到第一匹配项。如果 condition1 || condition2 condition1为真,则condition2为真。 (更具体地说:||首先评估其左侧操作数,如果该结果为真,则以该真实值作为结果;如果左侧结果为假,则||评估其右侧-手动操作数,并将该值作为结果。)

因此,对于该样本数据,它将始终与第一个条目匹配,因为它与条件匹配并且位于第二个条目之前(也与条件匹配)。但是,如果条目的顺序不同,id: 234id: 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"}
]);