在嵌套数组中寻找价值

时间:2019-03-24 18:52:00

标签: javascript arrays ecmascript-6 filter find

我正在尝试在对象数组中找到匹配的值。

我正在使用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]

任何帮助将不胜感激。

3 个答案:

答案 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);
通过这种方式,您将收到  此项是否存在的布尔值。 希望有帮助,