当我使用Array.splice()时,它'i’s like i'm使用Array.slice()
When i use Array.splice(), it's like i'm using Array.slice()?
所以我刚刚注意到,当我使用Array.splice()时,就像我在使用Array.slice(),
所以当我键入[0, 1, 2, 3].splice(0, 2)
时,它会返回[0, 1]
?(是的,我很抱歉我输入的是splice
而不是slice
)
基本上:
[0, 1, 2, 3, 4, 5].splice(0, 2);
returns [0, 1]?
[0, 1, 2, 3, 4, 5].splice(3, 1);
returns [3]?
[0, 1, 2, 3, 4, 5].slice(0, 2);
returns [0, 1]
[0, 1, 2, 3, 4, 5].slice(3, 1);
returns [3]
为什么会发生这种情况?它应该删除指定的对象,对吗?
当然,它返回相同的东西,只是slice不会改变原始数组。另一方面,拼接返回从原始阵列中删除的内容。
slice
获取数组一部分的副本并返回。
splice
移除数组的一部分并返回它。一个可选参数也允许用其他元素替换这些元素。
splice方法修改要调用的数组的内容。
splice()方法通过移除现有元素和/或添加新元素。
而slice方法返回给定索引范围中的新数组副本。
slice()方法返回数组一部分的浅拷贝转换为新的数组对象。
splice()
用其他项替换项,从而更改输入数组slice()
只是从一个数组中获取而不更改它
由于您没有使用变量作为输入,因此您永远看不到差异。但试试这个:
a = [4, 5, 6, 7, 8]
> [4, 5, 6, 7, 8]
a.splice(2, 2)
> [6, 7]
a
> [4, 5, 8]
a
已更改。那是splice()
真正的力量来自替代:
a = [3, 4, 5, 6, 7]
> [3, 4, 5, 6, 7]
a.splice(2, 2, 500, 600)
> [5, 6]
a
> [3, 4, 500, 600, 7]
如果您有一个项目数组要"拼接"到数组中,则必须使用.apply
:
a = [3, 4, 5, 6, 7]
> [3, 4, 5, 6, 7]
b = [500, 600]
> [500, 600]
a.splice.apply(a, [2, 2].concat(b))
> [5, 6]
a
> [3, 4, 500, 600, 7]
或者让你自己的函数更可读。
您也可以通过使第二个参数0:a.splice(2, 0, 500, 600)
将add项拼接到一个数组中。
你可以在文档中阅读所有这些,甚至更多!
相关文章:
- 复选框:使用Array.prototype.forEach调用推送选中订单,
- 在Javascript中,当使用array.prush方法向列表中添加项目时,如何对其进行排序
- 为什么要将Array.prototype.slice.call与参数一起使用
- 如何在返回单个对象时递归使用 Array.prototype.find()
- 如果 Array.prototype.map() 没有返回,它是否被正确使用
- 使用Javascript的高级Array.prototype.filter
- 为什么使用Array.prototype.map.call而不是Array.map.call
- Javascript测试-使用Array.prototype以随机顺序显示选项
- 使用 array.push 正确编码
- 为什么我不能在 Array.isArray 上成功使用“call”
- Javascript 使用 array 将 li 添加到 ul
- 使用 Javascript 或 jQuery 将 Array-String 转换为对象
- 是否可以使用“array.indexOf”作为“searchElement”传递对象
- 在 Array 原型中使用 array.splice
- 正在使用 Array.map 作为 foreach 的良好做法
- 仅返回数组数据,而不返回使用 Array.prototype 的函数本身
- 仅使用 Array.push 时数组中的单位化变量
- 使用类似于 Array.prototype.map() 的方法将数组转换为键值对象
- 如何在不使用 Array.filter() 的情况下从我的 JSON 对象中获取特定值
- Undefined在使用array.splice时不是一个函数