gpt4 book ai didi

javascript - 根据某些给定的偏好过滤并返回数组中的元素

转载 作者:行者123 更新时间:2023-12-01 03:17:38 25 4
gpt4 key购买 nike

假设如果我有两个数组 - 一个作为顺序首选项,另一个作为数据集,我想从与第一个匹配首选项匹配的数据集中返回第一个元素。

例如

const userPref = ['banana', 'apple', 'peach'];

const givenFruits = [
{ name: 'apple', color: 'red' },
{ name: 'orange', color: 'orange' },
{ name: 'pear', color: 'yellow' },
{ name: 'cherry', color: 'red' },
{ name: 'grape', color: 'red' },
{ name: 'peach', color: 'red' },
{ name: 'coconut', color: 'brown' }
];

function findFavFruit() {
userPref.forEach((pref) => {
givenFruits.forEach((fruit) => {
if(pref === fruit.name) {
return fruit;
}
});
});
}

console.log('findFavFruit(): ' + JSON.stringify(findFavFruit(), null, 2));

这总是返回未定义。它应该仅返回apple,因为它是用户首先匹配的偏好并且首先在givenFruits中找到。

上面的代码我做错了什么? Javascript 中是否有更简洁的方法(避免使用两次 forEach)?

最佳答案

您可以使用for...of循环给定的Fruits并使用Array.includes测试当前水果是否在最喜欢的水果数组中..

示例:

function findFavoriteFruit(preferences, arrayOfFruits) {
for (let fruit of arrayOfFruits) {
if (preferences.includes(fruit.name)) {
return fruit;
}
}
}

const userPref = ['apple', 'banana', 'peach'];

const givenFruits = [
{ name: 'apple', color: 'red' },
{ name: 'orange', color: 'orange' },
{ name: 'banana', color: 'yellow' },
{ name: 'pear', color: 'yellow' },
{ name: 'cherry', color: 'red' },
{ name: 'grape', color: 'red' },
{ name: 'peach', color: 'red' },
{ name: 'coconut', color: 'brown' }
];

const favoriteFruit = findFavoriteFruit(userPref, givenFruits);

console.log(favoriteFruit);

如您所见,此实现是最快的(与其他答案相比)here .

关于javascript - 根据某些给定的偏好过滤并返回数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45449277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com