从Javascript对象排序键
我看到了答案,但似乎对我不起作用。我尝试了对象和排序中所有值的变体,但似乎不起作用。我希望得到一个按对象中键(而不是键的值)排序的列表(在本例中,2个对象在json中): d3.json:从Javascript对象排序键,javascript,arrays,json,d3.js,Javascript,Arrays,Json,D3.js,我看到了答案,但似乎对我不起作用。我尝试了对象和排序中所有值的变体,但似乎不起作用。我希望得到一个按对象中键(而不是键的值)排序的列表(在本例中,2个对象在json中): d3.json: { "TEST1": {"purchase": ["yes", 2], "safety": ["no", 3], "quality": ["Carried by the husk", 1], "name": ["Eggs!", 0]}, "TEST2": {"purchase": "yes", "
{
"TEST1": {"purchase": ["yes", 2], "safety": ["no", 3], "quality": ["Carried by the husk", 1], "name": ["Eggs!", 0]},
"TEST2": {"purchase": "yes", "safety": "no", "quality": "Carried by the husk", "name": "0"}
}
还有JavaScript:
d3.json("d3.json", function(root) {
for (key in root) {
console.log(root[key]);
var test = root[key];
var list = Object.keys(test).sort(function(a,b){ return test[a]-test[b] })
console.log(list);
}
});
编辑:抱歉,我不清楚预期结果:我正在查找已排序的键,但返回的值与dlopez的答案相同。通过使用排序回调函数中的
test[a]-test[b]
,可以按属性值而不是键进行排序。要按键排序,可以使用以下命令:
var list = Object.keys(test).sort(function(a,b){ return a.localeCompare(b) })
这是默认的排序顺序,因此:
var list = Object.keys(test).sort()
通过在sort callback函数中使用
test[a]-test[b]
,可以按属性值而不是键进行排序。要按键排序,可以使用以下命令:
var list = Object.keys(test).sort(function(a,b){ return a.localeCompare(b) })
这是默认的排序顺序,因此:
var list = Object.keys(test).sort()
您只需使用
var list=Object.keys(test.sort();
您只需使用
var list=Object.keys(test.sort();
尝试以下方法:
var sortedByKeys = Object.keys(root)
.sort(function(a,b) { return a - b; })
.reduce(function(prev, curr) {
prev[curr] = root[curr];
return prev;
}, {});
试试这个:
var sortedByKeys = Object.keys(root)
.sort(function(a,b) { return a - b; })
.reduce(function(prev, curr) {
prev[curr] = root[curr];
return prev;
}, {});
预期结果是什么?好问题,我编辑:)预期结果是什么?好问题,我编辑:)谢谢!特别是对于解释期望的结果:)最终需要一个额外的步骤(从(对于根中的键)开始,您的代码只对根中的对象进行排序,而不是对根[key]中的对象进行排序),我可以省略排序函数(如Aromator所述):对于(根中的键){var sortedByKeys=Object.key(根[key]).sort()。reduce(函数(prev,curr){prev[curr]=root[key][curr];return-prev;},{};console.log(sortedByKeys);}谢谢!特别是为了解释所需的结果:)最终需要额外的步骤(从(对于root中的key)开始,代码只对root中的对象进行排序,而不是对root[key]中的对象进行排序)我可以省略排序函数(如Aromator所述):for(根中的键){var sortedByKeys=Object.keys(根[key]).sort().reduce(函数(prev,curr){prev[curr]=root[key][curr];return prev;},{};console.log(sortedByKeys);}