从数组中拼接出意外的元素
Unexpected elements being spliced out of an array?
我有一些javascript(这里是JSFiddle)
var array = new Array();
array.push('a');
array.push('b');
var index = array.indexOf('b');
array = array.splice(index, 1); // splice out the element
alert(array[0]); // Which one is left?
我希望警报框将返回"a",因为"b"正在被删除,但对话框显示的是"b"。
类似地,如果我试图删除"a"
var array = new Array();
array.push('a');
array.push('b');
var index = array.indexOf('a');
array = array.splice(index, 1); // splice out the element
alert(array[0]);
然后返回"a"。
为什么(我认为)不正确的值被从数组中拼接出来?
如果有帮助的话,我会用铬。
来自Array.prototype.splice()
:上的MDN文档
返回
包含已删除元素的数组。如果只移除一个元素,则返回一个元素的数组。如果没有删除任何元素,则返回一个空数组。
splice()
不是一个"移除"函数。splice()
方法更改数组的内容,在删除旧元素的同时添加新元素
这意味着实际的数组本身发生了更改。
要从数组中删除一个项目,应该使用Array.prototype.filter()
:
var array = ['a', 'b', 'stringToRemove', 'c'];
var filtered = array.filter(function(element){
return element !== 'stringToRemove';
});
alert(JSON.stringify(filtered))
而不是
array = array.splice(index, 1); // splice out the element
这样做,
array.splice(index,1);
因为该方法返回一个拼接项的数组,该数组将替换修改后的数组。
相关文章:
- CKEditor Widget-阻止编辑可编辑元素本身
- 如何设置html元素填充的动画
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 使用clickToggle并在单击另一个元素时关闭元素
- 单击时将焦点更改为元素
- 表追加而不附加最后一个元素
- 如何在jQuery中获取元素的形式
- 我可以获得相对于被点击元素的确切点击位置吗
- 在函数中添加数组元素的数值
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 元素意外地隐藏在Safari的某些实例中,总是出现在Firefox、Chrome中
- 如何在集合中的项上触发 jQuery 事件(意外的 jQuery 结果来自 $._data() 与集合的第一个元素)
- 使用 Jquery 将意外令牌非法附加到 DOM 元素时出现错误消息
- 尝试将一个元素加载到另一个元素时出现意外字符串
- 从数组中拼接出意外的元素
- 尝试使用outerWidth()和$(window).resize()将动态宽度的元素水平居中时出现意外行为
- 使用索引元素id时出现意外错误
- 将类添加到返回意外结果的元素
- JS元素插入导致意外的偏移