我正在尝试在对象数组中找到匹配的值。
我正在使用find
进行工作,这似乎很好。但是,如果我需要为这些键之一分配多个值怎么办?
这是当前代码:
const snack = "strawberry";
const fruits = [
{ label: "yellowFruit", value: "banana" },
{ label: "purpleFruit", value: "grape" },
{ label: "redFruit", value: "apple" },
{ label: "greenFruit", value: "waltermelon" },
];
这就是我寻找自己的价值的方式:
fruits.find(fruit => fruit.value === snack) || fruits[0]
我实际上需要将两个值与标签redFruit
关联,而不必复制该标签,如下所示,但是find
不能再执行此工作。
类似这样的东西:
const snack = "strawberry";
const fruits = [
{ label: "yellowFruit", value: "banana" },
{ label: "purpleFruit", value: "grape" },
{
label: "redFruit",
value: [
{ val: "apple" },
{ val: "strawberry" }
]
},
{ label: "greenFruit", value: "waltermelon" },
];
但是使用以下代码查找strawberry
不匹配:
fruits.find(fruit => fruit.value === snacks) || fruits[0]
任何帮助将不胜感激。
答案 0 :(得分:2)
您必须基于onScrollViewLoaded(){
setTimeout(()=>{
let scrollView = this.$refs.scrollView.nativeView;
scrollView.scrollToHorizontalOffset(scrollView.scrollableWidth, false)
},1);
},
属性类型使用其他方法,如果该值是一个数组,请使用Array#some
方法来获得结果。
value
let res = fruits.find(({ value }) => Array.isArray(value) ? value.some(({ val }) => val === snacks) : value === snacks) || fruits[0]
答案 1 :(得分:1)
保持数据简单:
const snack = "strawberry";
const fruits = [
{ label: "yellowFruit", value: "banana" },
{ label: "purpleFruit", value: "grape" },
{ label: "redFruit", value: "apple" },
{ label: "redFruit", value: "strawberry" },
{ label: "greenFruit", value: "waltermelon" },
];
...,您的代码也将很简单:
const result = fruits.find(({ value }) => value === snack)
答案 2 :(得分:0)
您可以这样做:
const snack = "strawberry";
const fruits = [{
label: "yellowFruit",
value: "banana"
},
{
label: "purpleFruit",
value: "grape"
},
{
label: "redFruit",
value: [{
val: "apple"
},
{
val: "strawberry"
}
]
},
{
label: "greenFruit",
value: "waltermelon"
},
];
let itemExists = fruits.some(item =>
Array.isArray(item.value) ?
item.value.some(subItem => subItem.val === snack) :
item.value === snack);
console.log(itemExists);