Javascript按此查找OR/ELSE按此查找
Javascript Find by this OR/ELSE find by this
是否有更简洁的方法来查找数组中与条件匹配的第一个值,如果找不到该值,请尝试其他值?
const animals = ['cat', 'dog', 'bird', 'snake'];
let favoriteAnimal = animals.find(animal => animal === 'cat');
if (!favoriteAnimal) favoriteAnimal = animals.find(animal => animal === 'dog');
稍微更新了我的问题。如果 'cat' 不在数组中,则查找 'dog'。如果 'cat' 或 'dog' 没有找到,只是 return undefined.
如果您只查找字符串值,您可以这样做:
const animals = ['dog', 'bird', 'snake'];
const animalsToTry = ['cat', 'dog'];
let favoriteAnimal = animalsToTry.find(animal => animals.includes(animal));
console.log(favoriteAnimal); // 'dog'
如果您希望根据 属性 匹配对象:
const animals = [{id: 'dog'}, {id: 'bird'}, {id: 'snake'}];
function findFirstMatchingAnimal(animals, animalIds) {
for (let id of animalIds) {
const animal = animals.find(a => a.id === id);
if (animal) return animal;
}
}
console.log(findFirstMatchingAnimal(animals, ['cat', 'dog'])); // { id: 'dog' }
console.log(findFirstMatchingAnimal(animals, ['bird', 'dog'])); // { id: 'bird' }
console.log(findFirstMatchingAnimal(animals, ['cow', 'monkey'])); // undefined
假设您的键列表 (favourites
) 按“优先级”从高到低排序,您可以从 animals
、[=14 的列表中迭代找到 favouriteAnimal
=]
function findFavourite(animals, favourites) {
// assume that `favourites` is ordered from highest to lowest "priority"
for (const favourite of favourites) {
if (animals.includes(favourite)) {
return favourite;
}
}
return null;
}
const animals = ['dog', 'bird', 'snake'];
console.log(findFavourite(animals, ['cat', 'dog'])); // 'dog'
console.log(findFavourite(animals, ['cat', 'bird', 'dog'])); // 'bird'
console.log(findFavourite(animals, ['cat', 'mouse'])); // null
是否有更简洁的方法来查找数组中与条件匹配的第一个值,如果找不到该值,请尝试其他值?
const animals = ['cat', 'dog', 'bird', 'snake'];
let favoriteAnimal = animals.find(animal => animal === 'cat');
if (!favoriteAnimal) favoriteAnimal = animals.find(animal => animal === 'dog');
稍微更新了我的问题。如果 'cat' 不在数组中,则查找 'dog'。如果 'cat' 或 'dog' 没有找到,只是 return undefined.
如果您只查找字符串值,您可以这样做:
const animals = ['dog', 'bird', 'snake'];
const animalsToTry = ['cat', 'dog'];
let favoriteAnimal = animalsToTry.find(animal => animals.includes(animal));
console.log(favoriteAnimal); // 'dog'
如果您希望根据 属性 匹配对象:
const animals = [{id: 'dog'}, {id: 'bird'}, {id: 'snake'}];
function findFirstMatchingAnimal(animals, animalIds) {
for (let id of animalIds) {
const animal = animals.find(a => a.id === id);
if (animal) return animal;
}
}
console.log(findFirstMatchingAnimal(animals, ['cat', 'dog'])); // { id: 'dog' }
console.log(findFirstMatchingAnimal(animals, ['bird', 'dog'])); // { id: 'bird' }
console.log(findFirstMatchingAnimal(animals, ['cow', 'monkey'])); // undefined
假设您的键列表 (favourites
) 按“优先级”从高到低排序,您可以从 animals
、[=14 的列表中迭代找到 favouriteAnimal
=]
function findFavourite(animals, favourites) {
// assume that `favourites` is ordered from highest to lowest "priority"
for (const favourite of favourites) {
if (animals.includes(favourite)) {
return favourite;
}
}
return null;
}
const animals = ['dog', 'bird', 'snake'];
console.log(findFavourite(animals, ['cat', 'dog'])); // 'dog'
console.log(findFavourite(animals, ['cat', 'bird', 'dog'])); // 'bird'
console.log(findFavourite(animals, ['cat', 'mouse'])); // null