【问题标题】:How to filter array key by another array number key如何通过另一个数组编号键过滤数组键
【发布时间】:2021-12-22 01:58:02
【问题描述】:

我有2个数组,第一个数组结构是:

items: [
    {
      name: "a",
      items: [
         { name: "jack" },
         { name: "jose" },
      ]
    },
    {
      name: "b",
      items: [
         { name: "lara" },
         { name: "jo" },
      ]
    },
    {
      name: "c",
      items: [
         { name: "andy" },
         { name: "hary" },
      ]
    }
]

和第二个数组:

number: [
  0: [0, 1],
  1: [1],
  2: [0]
]

如何通过“数字”过滤“项目”以及如何获得这样的输出? (最佳解决方案)

{["jack", "jole"],["jo"],["andy"]}

【问题讨论】:

标签: javascript arrays select filter key


【解决方案1】:

几张地图就可以了:

你想要的输出不是有效的JS所以我做了一个嵌套数组

const arr1 = [{ name: "a", items: [{ name: "jack" }, { name: "jose" }, ] }, { name: "b", items: [{ name: "lara" }, { name: "jo" }, ] }, { name: "c", items: [{ name: "andy" }, { name: "hary" }, ] } ], numbers = [ [0, 1], [1], [0] ]; 

const res = numbers
  .map((arr, i) => arr
    .map(key => arr1[i].items[key].name)
  )
console.log(res)

【讨论】:

    【解决方案2】:

    如果你的数字变量必须是一个对象。

    let items = [
      {
        name: "a",
        items: [{ name: "jack" }, { name: "jose" }]
      },
      {
        name: "b",
        items: [{ name: "lara" }, { name: "jo" }]
      },
      {
        name: "c",
        items: [{ name: "andy" }, { name: "hary" }]
      }
    ];
    
    let number = {
      0: [0, 1],
      1: [1],
      2: [0]
    };
    
    let result = []
    for (const [key, value] of Object.entries(number)){
      let names = []
      value.forEach(value => {
        names.push(items[key].items[value].name)
      })
      result.push(names)
    }
    
    console.log(result)

    【讨论】:

    • 仍然是数组 [] 而不是对象 {}
    猜你喜欢
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多