javascript - JS : Loop with multiple conditions

标签 javascript arrays loops sorting if-statement

我有一系列对象(汽车),我想从中仅显示“竞争”的汽车。

const cars = [
  {
    name: "red",
    competes: true,
    category: 1
  },
  {
   name: "blue",
   competes: false,
   category: 1
  },
  {
    name: "green",
    competes: true,
     category: 2
  },
  {
    name: "yellow",
    competes: true,
    category: 3
  }
]

但是从那些参加比赛的汽车中,我只想显示那些属于第一类的汽车,这对于 for 循环来说很好。

这些对象现在是静态的,但由于我想在第二时刻更改它们,我需要一个代码来检查汽车是否竞争,然后检查“类别”一中是否有汽车。

  • 如果“类别 1”中有汽车,请列出它们
  • 如果“类别”1 中没有汽车,请列出“类别”2 中的汽车(但不是 3)
  • 等等

我的尝试是在循环中使用一个循环,但由于它多次显示而不起作用

for (let i = 0; i < cars.length; i++) {
  if (cars[i].competes === false) continue;
  
  for (let f = 0; f < cars.length; f++) {
  if (cars[f].category > 1) break;
  console.log(`Cat1: ${cars[f].name}`);
}
}

如果“汽车”内的“类别”属性全部是 2 个或更多,如何解决这个问题?

const cars = [
  {
    name: "red",
    competes: true,
    category: 2
  },
  {
   name: "blue",
   competes: false,
   category: 2
  },
  {
    name: "green",
    competes: true,
     category: 3
  },
  {
    name: "yellow",
    competes: true,
    category: 4
  }
]

最佳答案

首先,根据类别对数组进行排序,然后过滤出包含要竞争的汽车的数组

const cars = [
    {
        name: "red",
        competes: true,
        category: 1
    },
    {
        name: "blue",
        competes: false,
        category: 1
    },
    {
        name: "green",
        competes: true,
        category: 2
    },
    {
        name: "yellow",
        competes: true,
        category: 3
    }
]
const sorted = cars.sort((a, b) => a.category - b.category);
const compete = sorted.filter(x => x.competes && x.category == sorted[0].category);
console.log(compete[0]);

关于javascript - JS : Loop with multiple conditions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70004899/

相关文章:

javascript - 使用函数 onChange

javascript - CoffeeScript 中的动态类生成

PHP多维数组通过key获取值

javascript - 正则表达式在循环中的第一个匹配处停止

javascript - ForEach 和 for .. of 中出现意外标识符

javascript - overflow hidden 的导航,但仍显示下拉菜单

javascript - 尝试将变量放入 Jquery 的选择器中

c++ - 在 segmentation 区间计算指数?

c - 错误: return value type does not match the function type

javascript - JQuery 或 JavaScript 是否有 next 语句/函数来跳到循环的下一次迭代?