【发布时间】:2020-12-07 13:38:10
【问题描述】:
我有一组对象。我想对它进行排序,将一些元素保留在相同的位置(使用 b="NOT")
var a=[{a:1,b:"YES"},{a:2,b:"YES"},{a:5,b:"NOT"},{a:0,b:"NOT"},{a:0,b:"YES"}]
function sortc(x,y){
if (x.b=="NOT" || y.b=="NOT")
return Infinity ;
return (Number(x.a)-Number(y.a))
}
console.log(a.sort(sortc));
结果是:
0: {a: 1, b: "YES"}
1: {a: 2, b: "YES"}
2: {a: 5, b: "NOT"}
3: {a: 0, b: "NOT"}
4: {a: 0, b: "YES"}
预期的结果是(带有 b="YES" 的排序组件。):
{ "a": 0, "b": "YES" }
{ "a": 1, "b": "YES" }
{ "a": 5, "b": "NOT" }
{ "a": 0, "b": "NOT" }
{ "a": 2, "b": "YES" }
【问题讨论】:
-
"我想对它进行排序,将一些元素留在相同的位置(使用 b="NOT")" 返回
Infinite实际上并没有将它们留在相同的位置。只是意味着y应该排在x之后。 -
Number(x.a)是不必要的,因为x.a已经是number值。 -
你能包含想要的输出吗?
-
@VLAZ “结果是”部分似乎是不正确的结果,而不是所需的结果。
-
嗯,我在注意到它已关闭之前回答了。我想这对我来说很清楚,但我同意应该包括所需的输出。我假设您期望
{ "a": 0, "b": "YES" }, { "a": 1, "b": "YES" }, { "a": 5, "b": "NOT" }, { "a": 0, "b": "NOT" }, { "a": 2, "b": "YES" }但我可能错了。你能澄清一下吗?当这种情况发生时,我很乐意投票重新开放。如果需要,我会修改我的答案。
标签: javascript arrays sorting object