javascript - 根据条件重新排列javascript数组
问题描述
重新排列 javascript 数组值,结果为 true 的用户必须从最后一个索引显示。
如果结果值为真,那么他们的对象应该从最后一个对象开始,例如 Zahir 和harman 应该是最后两个对象。
const scorecard = [
{
name: "Zahir",
score: 23,
result: true,
},
{
name: "Kabir",
score: 13,
result: false
},
{
name: "Kunal",
score: 29
},
{
name: "Arnav",
score: 42,
result: false
},
{
name: "Harman",
score: 19,
result: true
},
{
name: "Rohit",
score: 41
},
{
name: "Rajan",
score: 34
}
];
scorecard.sort(function(a, b) {
if (a.result == true)
return -1;
else
return 0;
});
console.log("s", scorecard)
解决方案
你的代码很好。只需像这样替换您的“if”语法:
if (!a.result) return -1;
else return 0;
或者像这样优化代码:
const scorecard = [
{
name: "Zahir",
score: 23,
result: true,
},
{
name: "Kabir",
score: 13,
result: false
},
{
name: "Kunal",
score: 29
},
{
name: "Arnav",
score: 42,
result: false
},
{
name: "Harman",
score: 19,
result: true
},
{
name: "Rohit",
score: 41
},
{
name: "Rajan",
score: 34
}
];
scorecard.sort(({result}) => !result ? -1 : 0);
console.log("s", scorecard)
此外,您可以使用.reverse()
(更多信息在这里)
像这样:
const scorecard = [
{
name: "Zahir",
score: 23,
result: true,
},
{
name: "Kabir",
score: 13,
result: false
},
{
name: "Kunal",
score: 29
},
{
name: "Arnav",
score: 42,
result: false
},
{
name: "Harman",
score: 19,
result: true
},
{
name: "Rohit",
score: 41
},
{
name: "Rajan",
score: 34
}
];
scorecard.sort(({result}) => result ? -1 : 0);
console.log("s", scorecard)
console.log("s reverse", scorecard.reverse())
但我更喜欢你的第一个选择
推荐阅读
- java - 如何检查文本文件中是否存在单词
- hook - 如何从 MediaWiki SearchAfterNoDirectMatch 挂钩返回文本?
- javascript - 使用类更改单击时的背景颜色
- python-3.x - python 中的 setup.py 显示“ModuleNotFoundError: No module named”尽管它存在并且存在
- asp.net-core - 如何使用 identityserver4 和 asp.netcore 身份进行用户管理
- python - 使用 Python 或 pandas 使用数据集替换另一个数据集中的值
- java - OVERPASS API 中的缩放级别和经纬度之间有什么关系吗?
- javascript - 在 JS 派生类的构造函数中使用 super() 感到困惑
- java - Java 独占全屏模式不断抛出“无效显示模式”
- c# - 重用具有 DbContext 层次结构的 ASP.NET 控制器和服务