Javascript 阵列重置
我有一个列表项目,其中一些项目缺失,例如,这里第三顺序缺失:Javascript 阵列重置,javascript,jquery,arrays,map,Javascript,Jquery,Arrays,Map,我有一个列表项目,其中一些项目缺失,例如,这里第三顺序缺失: <ol> <li data-id='0'>Apple</li> <li data-id='1'>Banana</li> <li data-id='3'>Tea</li> <li data-id='4'>Biscuit</li> </ol> 在我将其重新映射到新阵列后: var ordered
<ol>
<li data-id='0'>Apple</li>
<li data-id='1'>Banana</li>
<li data-id='3'>Tea</li>
<li data-id='4'>Biscuit</li>
</ol>
在我将其重新映射到新阵列后:
var ordered_array = jQuery('ol li').map(function() {
return arr[jQuery(this).data('id')];
}).get();
console.log(ordered_array);
我得到:
["a", "b", "e"]
为什么它丢失了一个项目?('d')因为如果从
map()
回调中返回未定义的或null
值,则返回的数组()中不包含该元素的条目
在这种情况下,data id=“4”
用于Biscuit
,但ar[4]==未定义的
,因此它不包括在返回的数组中。因为如果从map()
回调中返回未定义的
值或null
值,则返回的数组中不包括该元素的条目()
在这种情况下,饼干的数据id=“4”
,但是ar[4]==未定义的,因此它不包括在返回的数组中。和Tea
(数据id=3
)映射到e
。如何使其映射所有项目?以及Tea
(数据id=3
)映射到e
。如何使其映射所有项目?属性的值可能应该是0、1、2、3,而不是0、1、3、4。是的,但我已删除了第3个(在本例中),因此我尝试重新映射它,但不再次更改id,这是否可能?@Toniq:而不是从arr
中删除该值,将其设置为undefined
/null
<代码>var arr=['a','b',null,'d','e']代码>不,我不能这样做,我必须删除它。好吧,那么为什么数据id
必须引用元素索引呢?它不能直接包含元素吗?最简单的选择是在删除元素时更新数据id
(在响应中包括“@Matt”,因此在您回复时我会收到通知)。属性的值可能应该是0、1、2、3,而不是0、1、3、4。是的,但我已删除了第3个(在本例中),因此我正在尝试重新映射它,但不会再次更改id,有可能吗?@Toniq:与其从arr
中删除该值,不如将其设置为undefined
/null
<代码>var arr=['a','b',null,'d','e']代码>不,我不能这样做,我必须删除它。好吧,那么为什么数据id
必须引用元素索引呢?它不能直接包含元素吗?最简单的选择是在删除元素时更新数据ID
(在响应中包括“@Matt”,因此在您回复时我会收到通知)。
["a", "b", "e"]