我有以下代码来获取元素的顺序。但不是按照元素的顺序获取数组,而是按字母顺序排列。
function gatherTreeIds( $parent ){
var GatheredIds = [];
$parent.children('div.nt_row').each(function(){
GatheredIds[ this.title ] = 'someValue';
});
return GatheredIds;
}
<div id="Wrap">
<div class="nt_row" title="AAA"></div>
<div class="nt_row" title="CCC"></div>
<div class="nt_row" title="BBB"></div>
</div>
Here is my jsFiddle example(检查控制台的结果)。它为我['AAA','BBB','CCC']
而不是所需的['AAA','CCC','BBB']
。
重要!这必须递归。目前还没有简化问题。
答案 0 :(得分:4)
你混淆了数组和散列这两个概念。数组有顺序,而哈希有命名键,你不能同时拥有数据单结构。
使用数组:
var GatheredIds = [];
$parent.children('div.nt_row').each(function(){
GatheredIds.push('someValue');
});
return GatheredIds;
如果要记录项目标题,可以使用哈希数组:
var GatheredIds = [];
$parent.children('div.nt_row').each(function(){
GatheredIds.push({value: 'someValue', title: this.title);
});
return GatheredIds;
答案 1 :(得分:3)
这是因为您将标题存储为对象属性。在您的示例中,GatheredIds
不是数组,这是一个对象。
JavaScript中的对象没有顺序(与PHP的地图数组相反)。如果您需要遵循订单,则应使用数组。
一种可能的解决方案:
function gatherTreeIds( $parent ){
return $parent.children('div.nt_row').map(function() {
return {
title: this.title,
value: 'someValue'
};
}).get();
}