Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 阵列重置_Javascript_Jquery_Arrays_Map - Fatal编程技术网

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"]