use*_*875 4 javascript sorting filter
我有一个对象数组,我想在其中找到某些元素并将它们放在开头或数组中。我开始使用 find 函数来做它并且它起作用了,但是现在因为可以有多个元素我切换到过滤器函数但是,现在它停止工作了,我该如何解决这个问题?
输入示例:
colors= [
{name: "green", popular: true},
{name: "yellow", popular: false},
{name: "red", popular: true},
{name: "black", popular: true},
{name: "red", popular: true}
]
Run Code Online (Sandbox Code Playgroud)
功能:
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
}
Run Code Online (Sandbox Code Playgroud)
预期输出:
colors= [
{name: "red", popular: true},
{name: "red", popular: true},
{name: "green", popular: true},
{name: "yellow", popular: false},
{name: "black", popular: true}
]
Run Code Online (Sandbox Code Playgroud)
通过使用过滤器 red 变量返回一个数组而不是像 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);Run Code Online (Sandbox Code Playgroud)