javascript - 在嵌套数组中查找值

标签 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" },
];

这就是我如何找到自己的值(value):

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]

任何帮助将不胜感激。

最佳答案

您必须根据 value 属性类型使用不同的方法,如果该值是数组,则使用 Array#some方法来实现结果。

let res = fruits.find(({ value }) => Array.isArray(value) ? value.some(({ val }) => val === snacks) : value === snacks) || fruits[0]

const snacks = "strawberry";

const fruits = [{
    label: "yellowFruit",
    value: "banana"
  },
  {
    label: "purpleFruit",
    value: "grape"
  },
  {
    label: "redFruit",
    value: [{
        val: "apple"
      },
      {
        val: "strawberry"
      }
    ]
  },
  {
    label: "greenFruit",
    value: "waltermelon"
  },
];

let res = fruits.find(({ value }) => Array.isArray(value) ? value.some(({ val }) => val === snacks) : value === snacks) || fruits[0]

console.log(res);

关于javascript - 在嵌套数组中查找值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55327320/

相关文章:

Javascript 在 switch case 中进行多重决策

javascript - 在 Django 表单中包含 Dropzone 表单时无法完成 POST

javascript - AngularJS : Can't figure out why nested angular directive does not get rendered when transcluding with transclude :'element'

python - 在 Python 2 中搜索字典

javascript - 由于竞争条件,MobX Action 计划/执行顺序未保留

javascript - JavaScript 领域中 [[intrinsics]] 属性的内容是什么?

javascript - 方法参数声明中的 "colon"表示法之后可能会出现什么情况?

javascript - 可以在数组上循环的图像

php - 在PHP循环中建立逗号分隔的字符串

javascript - 由于某种原因返回 setTimeout 返回 1