javascript - 在检查 Javascript 中的其他项之前检查数组中的特定项
问题描述
我有一个array
我object
想object
在检查其他人之前检查其中任何一个是否有标题“食物”,但目前,它会按顺序检查。贝娄是我的代码
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
谢谢。
解决方案
您可以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 === food
和b.title
不是,-1
将从compareFunction
. 所以,a
会放在b
数组的前面。
推荐阅读
- symfony - Symfony 访问决策管理器策略始终是肯定的
- java - 我想插入 ID,其值为包含与该 ID 匹配的记录的列表
- c# - 在 WindowsFormHost 面板内排列控件 - wpf
- python-3.x - 一旦我的爬虫爬取了所有预期的页面,我如何打印一条消息?
- python - Python 在项目级别覆盖 sys.excepthook
- flutter - Flutter 将值传递给全局变量
- android - 未处理的异常:MissingPluginException(在通道 plugins.flutter.io/shared_preferences 上找不到方法 getAll 的实现)
- mysql - MySQL 多重替换
- apache-kafka - 为什么kafka生产者使用--broker-list而客户使用--bootstrap-server?
- c# - 如何在 C# 中将 Opus 编解码器转码为 G.711 编解码器