首页 > 解决方案 > 在检查 Javascript 中的其他项之前检查数组中的特定项

问题描述

我有一个arrayobjectobject在检查其他人之前检查其中任何一个是否有标题“食物”,但目前,它会按顺序检查。贝娄是我的代码

let db = {
  users: [{
      id: 1,
      title: "food"
    },
    {
      id: 2,
      title: "stone"
    },
    {
      id: 3,
      title: "food"
    }
  ]
}

for (let index in db.users) {
  if (db.users[index].title === "food") {
    console.log("Its food");
    continue;
  }
  console.log("Its not food");
}

使用上面的代码,我得到以下结果

Its food
Its not food
Its food

我该怎么做才能在任何其他标题之前检查所有食物,以便我得到结果

Its food
Its food
Its not food 

谢谢。

标签: javascriptarrays

解决方案


您可以sort"food"项目放在数组的开头,然后循环遍历它

let db = { users: [ { id: 1, title: "food" },  { id: 2, title: "stone" },  { id: 3, title: "food" }] };

db.users.sort((a, b) => (b.title === "food") - (a.title === "food"))
        .forEach(a => console.log(a.title === "food" ? "It's food" : "It's not food"))

减去布尔值返回 1、-1 或 0

true - false === 1
false - true === -1
true - true === 0

因此,如果a.title === foodb.title不是,-1将从compareFunction. 所以,a会放在b数组的前面。


推荐阅读