【问题标题】:How to write nested loop in ES6? [duplicate]如何在 ES6 中编写嵌套循环? [复制]
【发布时间】:2020-01-30 17:26:36
【问题描述】:

如何在 ES6 中重写这个嵌套循环并将其放在一行中?

const fruits = [ { id: 1, name: "orange"},{ id: 3, name: "apple"},{ id: 4, name: "grape"}]
const selectedFruits = [ "2", "3" ]
  
let fruitsArr= [];

fruits.forEach(fruit => {
  selectedFruits.forEach(selected => {
    if (selected == fruit.id) {
      fruitsArr.push(fruit.name)
    }
  })
})

console.log(fruitsArr)
  

【问题讨论】:

  • ES6,把它放在一行只会让它更难阅读。
  • 任何 Javascript代码都可以压缩到一行
  • 只是逻辑问题。 let fruitsArr = fruits.filter(f => selectedFruits.indexOf(f.id + "") > 0).map(f => f.name);

标签: javascript arrays loops


【解决方案1】:

您可以过滤数组并通过将selectedFruits 更改为数字数组来检查includes

const
    fruits = [{ id: 1, name: "orange" }, { id: 3, name: "apple" }, { id: 4, name: "grape" }],
    selectedFruits = [2, 3],
    fruitsArr = fruits.filter(({ id }) => selectedFruits.includes(id));

console.log(fruitsArr);

【讨论】:

    【解决方案2】:

    reduce:

    const fruits = [ { id: 1, name: "orange"},{ id: 3, name: "apple"},{ id: 4, name: "grape"}]
    const selectedFruits = [ "2", "3" ]
    const fruitsArr = fruits.reduce((p, c) => (selectedFruits.includes(String(c.id)) && p.push(c), p), [])
    console.log(fruitsArr)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2021-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-27
      • 2021-08-11
      相关资源
      最近更新 更多