Egi*_*idi 1 javascript arrays json
我有以下数组:
[{"cod_nivel":"INC2","cod_modelo":"D"},
{"cod_nivel":"INC2","cod_modelo":"B"},
{"cod_nivel":"PRIM","cod_modelo":"B"},
{"cod_nivel":"PRIM","cod_modelo":"D"},
{"cod_nivel":"PRIM2","cod_modelo":"B"},
{"cod_nivel":"PRIM2","cod_modelo":"D"},
{"cod_nivel":"PRIM2","cod_modelo":"A"}]
Run Code Online (Sandbox Code Playgroud)
我需要通过"cod_modelo"升序按"cod_nivel"分组来对这个对象数组进行排序.所以结果应该是:
[{"cod_nivel":"INC2","cod_modelo":"B"},
{"cod_nivel":"INC2","cod_modelo":"D"},
{"cod_nivel":"PRIM","cod_modelo":"B"},
{"cod_nivel":"PRIM","cod_modelo":"D"},
{"cod_nivel":"PRIM2","cod_modelo":"A"},
{"cod_nivel":"PRIM2","cod_modelo":"B"},
{"cod_nivel":"PRIM2","cod_modelo":"D"}]
Run Code Online (Sandbox Code Playgroud)
我的尝试:
var array = [{"cod_nivel":"INC2","cod_modelo":"D"},
{"cod_nivel":"INC2","cod_modelo":"B"},
{"cod_nivel":"PRIM","cod_modelo":"B"},
{"cod_nivel":"PRIM","cod_modelo":"D"},
{"cod_nivel":"PRIM2","cod_modelo":"B"},
{"cod_nivel":"PRIM2","cod_modelo":"D"},
{"cod_nivel":"PRIM2","cod_modelo":"A"}];
var groups = {}; // I know i need some temp object to store the current level that is being ordered..
for (var i = 0; i < array.length; i++) {
groups.push(array[i]);
}
Run Code Online (Sandbox Code Playgroud)
该排序方法将做的工作适合你.
此代码首先按cod_nivel,然后依次对数组进行排序cod_modelo.
条件运算符:
condition ? expr1 : expr2
Run Code Online (Sandbox Code Playgroud)
...用于按键比较数组的元素.(条件运算符通常称为"三元运算符",因为它是唯一需要三个操作数的JavaScript运算符.)
var arr= [{"cod_nivel":"INC2","cod_modelo":"D"},
{"cod_nivel":"INC2","cod_modelo":"B"},
{"cod_nivel":"PRIM","cod_modelo":"B"},
{"cod_nivel":"PRIM","cod_modelo":"D"},
{"cod_nivel":"PRIM2","cod_modelo":"B"},
{"cod_nivel":"PRIM2","cod_modelo":"D"},
{"cod_nivel":"PRIM2","cod_modelo":"A"}
];
var sorted= arr.sort(function(a, b) {
return a.cod_nivel > b.cod_nivel ? 1 :
a.cod_nivel < b.cod_nivel ? -1 :
a.cod_modelo > b.cod_modelo ? 1 :
a.cod_modelo < b.cod_modelo ? -1 :
0;
});
document.body.innerHTML= JSON.stringify(sorted).replace(/},/g,'},<br>');Run Code Online (Sandbox Code Playgroud)