JavaScript - “规范化”数组索引
JavaScript - 'Normalize' array indexes
我正在寻找一种在Javascript中'规范化'数组索引的方法。我有一个大数组(_spm
),其中包含带有数字索引的值,例如(_spm[201023]
)。
(为了你,要理解:从零开始重新索引数组。
我需要一种方法来使所有记录都具有更人性化的索引(并且也可以排序)。
我的意思是:
function normalize( arrayWithMessedUpIndexes ){ return reIndexedAndOrderedArray }
一个可能的输入是数组_spm
考虑到:
_spm[201023] = "s";
_spm[376615] = "m";
我正在寻找的方法的可能输出(使用上面的输入数组):
_spm[0] = "s"
_spm[1] = "m"
你可以使用Array.prototype.filter
var arr = [];
arr [42] = "foo";
arr [1337] = "bar";
arr.filter (function () {return true}); //["foo", "bar"]
现在,这是如何工作的?让我们看一下 ES5 §15.4.4.20,它描述了该过程。
- 。一些初始化步骤
- 9.重复,而k
- 一个。让
Pk
ToString(k)
. - 二.让我们
kPresent
调用带有参数Pk
的 [[HasProperty]]O
的内部方法的结果。 - 三.如果
kPresent
为真,则- 施展魔术
- 一个。让
由于示例数组的第一个初始化索引是 42,对于每个n < 42
,调用n in arr
或arr.hasOwnProperty (n)
的计算结果为false
。
鉴于此,不满足步骤 9c 中描述的条件,因此跳过索引。
请注意,[].filter
是 ES5,可能与旧版浏览器不兼容。
数组
索引总是排序的,你需要做的就是删除不需要的元素
_spm = _spm.filter(function(v) { return v != undefined });
相关文章:
- 如何在映射数组中添加换行符
- javascript结合了数组和字典
- 需要帮助设置json数组
- 不能从angular2中的子组件指定父组件中的数组
- 使用JS将数组转换为json对象
- 数组在递归方法中设置为null
- knockoutjs可观察数组
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将数组从PHP传递到Javascript
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 在函数中添加数组元素的数值
- 无法通过数组映射绑定
- javascript中的数组出错
- 如何使用 node.js 比较两个 json 数组
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 根据id将json数组组合为一个json数组
- 如何通过数组更新角度子范围
- JavaScript - “规范化”数组索引
- 使用 LoDash 或类似方法规范化/扁平化 JS 数组
- D3.js将数组数据映射从规范化更改为规则堆叠图