【发布时间】:2019-07-16 13:54:19
【问题描述】:
有没有办法对结构中的对象数组进行排序:
var objs = [{
"name": "B",
"value": 1
}, {
"name": "D",
"value": "45"
}, {
"name": "E",
"value": "234"
}, {
"name": "A",
"value": "543"
}, {
"name": "C",
"value": "250"
}, {
"name": "B",
"value": 6
}, {
"name": "D",
"value": "234"
}, {
"name": "E",
"value": "67"
}, {
"name": "A",
"value": "78"
}, {
"name": "C",
"value": "12"
}];
通过另一个数组中的元素:
var orderedArray = ["E", "C", "B", "A", "D"];
为了得到这样的结构:
{
"name": "E",
"value": "234"
},
{
"name": "C",
"value": "250"
},
{
"name": "B",
"value": 1
},
{
"name": "A",
"value": "543"
},
{
"name": "D",
"value": "45"
},
{
"name": "E",
"value": "67"
},
{
"name": "C",
"value": "12"
},
{
"name": "B",
"value": 6
},
{
"name": "A",
"value": "78"
},
{
"name": "D",
"value": "234"
}
我正在尝试按名称键的索引使用 sort() 函数:
var objs = [{ "name": "B", "value": 1 }, { "name": "D", "value": "45" }, { "name": "E", "value": "234" }, { "name": "A", "value": "543" }, { "name": "C", "value": "250" }, { "name": "B", "value": 6 }, { "name": "D", "value": "234" }, { "name": "E", "value": "67" }, { "name": "A", "value": "78" }, { "name": "C", "value": "12" }];
var orderedArray = ["E", "C", "B", "A", "D"];
var sorted = objs.sort((a, b) => orderedArray.indexOf(a.name) - orderedArray.indexOf(b.name));
console.log(sorted);
但结果的顺序不正确。
示例:jsfiddle
【问题讨论】:
-
订单有什么问题?它看起来与您的
orderedArray指定的确切顺序完全相同。 编辑:请注意,我还将您的代码制作成可运行的内联 sn-p。 -
你能给我们更多你的预期输出吗?您显示了一个 E,然后是一个 C,然后是一个 B。但是每个都有多个,那么其他应该在哪里?
-
他们昨天问了同样的问题
-
@Kobe 昨天的问题似乎相关但不一样。
-
您的排序似乎完全是任意的。你想达到什么目的?
标签: javascript arrays sorting javascript-objects