【发布时间】:2019-08-15 00:19:35
【问题描述】:
我有一个如下所示的数组:
order = [ "foo", "bar", "baz" ];
这个数组包含我想要对我的对象数组进行排序的属性值。我想对数据进行排序,以便所有名称为“foo”的对象首先出现,然后是“bar”,然后是“baz”。我的对象数组看起来像这样:
data = [
{name: "foo", score: 8},
{name: "baz", score: 4},
{name: "baz", score: 9},
{name: "foo", score: 6},
{name: "bar", score: 9}
];
我希望数据顺序的结果看起来像这样,数组按名称排序,但名称相同时也按分数 desc 排序:
sortedData = [
{name: "foo", score: 8},
{name: "foo", score: 6},
{name: "bar", score: 9},
{name: "baz", score: 9},
{name: "baz", score: 4}
];
这是我目前尝试过的代码:
order.forEach(name => {
sortedData = [...this.data].sort(function(obj1, obj2) {
return (
-(obj1.name) || obj2.score < obj1.score
);
});
});
console.log(sortedData);
【问题讨论】:
-
如果您不希望原始数组发生变异,而是返回一个新的排序数组,那么请检查我的答案!
标签: javascript arrays sorting object foreach