【发布时间】:2021-11-15 17:15:03
【问题描述】:
我有一个 JSON 数组如下:
[{
"name": "ABC",
"default": false,
"details": [
{
"detail1": "value1"
},
{
"detail2": "value2"
}
]
},
{
"name": "PQR",
"default": false,
"details": [
{
"detail3": "value3"
},
{
"detail4": "value4"
}
]
},
{
"name": "XYZ",
"default": true,
"details": [
{
"detail5": "value5"
},
{
"detail6": "value6"
}
]
}]
现在,如果 default 值为 true ,我希望它成为数组的第一个元素,其余元素应根据 name 按字母顺序排序。只有一个元素的default 为true,或者所有元素的default 为false。
排序后的预期 JSON 应该是:
[{
"name": "XYZ",
"default": true,
"details": [
{
"detail5": "value5"
},
{
"detail6": "value6"
}
]
},
{
"name": "ABC",
"default": false,
"details": [
{
"detail1": "value1"
},
{
"detail2": "value2"
}
]
},
{
"name": "PQR",
"default": false,
"details": [
{
"detail3": "value3"
},
{
"detail4": "value4"
}
]
}]
我已尝试使用此代码对 JSON 数组进行排序:
jsonArray.sort( function( a, b ) {
a = a.name.toLowerCase();
b = b.name.toLowerCase();
return a < b ? -1 : a > b ? 1 : 0;
});
但我无法弄清楚如何检查 default 值并进行相应排序。如何达到预期效果?
【问题讨论】:
-
在
return之前,尝试if (a.default) return -1; if (b.default) return 1;之类的东西(另请注意,您所拥有的只是一个数组。JSON 是一种用于传输对象的文本格式,但没有像JSON 数组/JSON 对象) -
我将首先不重新分配您的输入变量
a, b,这样做您将无法访问数组元素的其他属性。
标签: javascript