不需要的数组排序
Unwanted sorting of array
我有以下代码来获取元素的顺序。但是,它不是按元素顺序获取数组,而是按字母顺序排列。
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>
这是我的jsFiddle示例(检查控制台以获取结果)。它给了我['AAA','BBB','CCC']
而不是所需的['AAA','CCC','BBB']
.
重要!这必须递归。目前不是简化问题。
你混淆了数组和哈希这两个概念。数组有顺序,而哈希有命名键,你不能在一个数据单一结构中同时具有两者。
对于数组,您将使用:
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;
发生这种情况是因为您将标题存储为对象属性。在您的示例中GatheredIds
不是数组,这是一个对象。
JavaScript 中的对象没有顺序(与 PHP 的映射数组相反)。如果需要遵循顺序,则应改用数组。
一种可能的解决方案:
function gatherTreeIds( $parent ){
return $parent.children('div.nt_row').map(function() {
return {
title: this.title,
value: 'someValue'
};
}).get();
}
演示:http://jsfiddle.net/FmyBb/4/
相关文章:
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- MongoDB (php) - 以数组而不是多个属性的形式返回文档属性
- node.js/javascript/couchdb视图到关联数组似乎不起作用
- 就地反转数组为什么不起作用
- 为什么Angularjs服务返回的是字符数组而不是对象数组
- Javascript中的多维数组排序索引问题
- 根据某些条件验证用户输入,而不是将输入输入到数组中,需要最基本的解决方案
- 传递参数数组而不更改此项
- TypeError: matrix[y].push 在尝试使用 javascript 创建 2D 数组时不是一个函数
- 局部数组变量不是数组
- Yui Get 复选框返回数组而不是布尔值
- 使用RegExp循环数组而不是for循环(Javascript)
- 不需要的数组排序
- 数组排序不正确/不可预测,使用 indexOf 时
- 数组排序前循环不保持数组排序
- 即使具有相同的值,排序后的数组也不相同
- 在KnockoutJs中对可观察数组排序时UI不更新
- 从View中渲染数组而不需要在模板中进行循环
- 数组排序不起作用
- 多维数组排序不工作在IE