Javascript :使用值 属性 对关联数组进行排序而不转换为对象数组
Javascript : Sort Associative array using value property without converting into Array of objects
我需要按值对关联数组进行排序(使用 "position" 值,如下所示)。我尝试通过转换成数组。它工作正常。但是我想知道,还有其他方法吗?
{
"CAB":{
name:CBSSP,
position:2
},
"NSG":{
name:NNSSP,
position:3
},
"EQU":{
name:SSP,
position:1
}
}
JavaScript 中没有关联数组,您拥有的是一个对象,具有属性 CAB
、NSG
和 EQU
。
对象属性不能保证集合顺序,所以解决方案是使用对象数组,因为数组确实可以保证顺序。
您可以使用顺序数组来对对象进行有序引用。您需要更正位置,因为数组是从零开始的。
var object = { "CAB": { name: 'CBSSP', position: 2 }, "NSG": { name: 'NNSSP', position: 3 }, "EQU": { name: 'SSP', position: 1 } },
order = [];
Object.keys(object).forEach(function (k) {
return order[object[k].position - 1] = k;
});
document.write('<pre>' + JSON.stringify(order, 0, 4) + '</pre>');
您也可以试试:
Object.keys(o).map(function(key){return o[key];})
.sort(function(p, c){return p.position - c.position})
我需要按值对关联数组进行排序(使用 "position" 值,如下所示)。我尝试通过转换成数组。它工作正常。但是我想知道,还有其他方法吗?
{
"CAB":{
name:CBSSP,
position:2
},
"NSG":{
name:NNSSP,
position:3
},
"EQU":{
name:SSP,
position:1
}
}
JavaScript 中没有关联数组,您拥有的是一个对象,具有属性 CAB
、NSG
和 EQU
。
对象属性不能保证集合顺序,所以解决方案是使用对象数组,因为数组确实可以保证顺序。
您可以使用顺序数组来对对象进行有序引用。您需要更正位置,因为数组是从零开始的。
var object = { "CAB": { name: 'CBSSP', position: 2 }, "NSG": { name: 'NNSSP', position: 3 }, "EQU": { name: 'SSP', position: 1 } },
order = [];
Object.keys(object).forEach(function (k) {
return order[object[k].position - 1] = k;
});
document.write('<pre>' + JSON.stringify(order, 0, 4) + '</pre>');
您也可以试试:
Object.keys(o).map(function(key){return o[key];})
.sort(function(p, c){return p.position - c.position})