javascript - 使用过滤器和排序将元素放在数组的开头 - javascript

标签 javascript sorting filter

我有一个对象数组,我想在其中找到某些元素并将它们放在开头或数组中。我开始通过使用 find 功能来做这件事,但现在因为可以有多个元素我切换到 filter 功能,但是现在它停止工作了,我该如何解决这个问题?
输入示例:

colors= [
   {name: "green", popular: true},
   {name: "yellow", popular: false},
   {name: "red", popular: true},
   {name: "black", popular: true},
   {name: "red", popular: true}
]
功能:
sort(colors) {
    let red= colors.filter(color=> colors.name === "red")

    if(red){
        colors.sort(function(x,y){ return x == red? -1 : y == red? 1 : 0; });
    }

    return colors
}
预期输出:
colors= [
   {name: "red", popular: true},
   {name: "red", popular: true},
   {name: "green", popular: true},
   {name: "yellow", popular: false},
   {name: "black", popular: true}
]
通过使用过滤器红色变量返回一个数组而不是像 find 这样的对象

最佳答案

您可以将红色部分排序到顶部。

const
    colors= [{ name: "green", popular: true }, { name: "yellow", popular: false }, { name: "red", popular: true }, { name: "black", popular: true }, { name: "red", popular: true }];

colors.sort((a, b) => (b.name === "red") - (a.name === "red"));

console.log(colors);

关于javascript - 使用过滤器和排序将元素放在数组的开头 - javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63789070/

相关文章:

javascript - 如何反复使用 onclick() & if 语句更改图像?

javascript - 如何计算JavaScript数组中变量重复的次数?

Bash 真正的数字顺序包括负数?

javascript - jQuery dataTables 插件 - 如何忽略列排序中的单词

javascript - 使用分页时只有表格的第一页是可点击的 - List.js

Javascript 无法为原型(prototype)制作通用功能

mongodb - 在 Mongodb 中永久排序集合

javascript - 多个 jQuery :contains() args not working

Android tap URL 打开修改后的 URL

c++ - 在 C++ 98 中优化 vector 过滤