根据javascript中的索引将数组分成两部分
我有一个包含对象列表的数组。我想在一个特定的索引处分割这个数组,比如 4(这实际上是一个变量)。我想将分割数组的第二部分存储到另一个数组中。可能很简单,但我想不出一个好的方法来做到这一点。
I have an array with a list of objects. I want to split this array at one particular index, say 4 (this in real is a variable). I want to store the second part of the split array into another array. Might be simple, but I am unable to think of a nice way to do this.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
评论(8)
秋千易2024-12-03 17:42:10
您可以使用 Array@splice
将指定索引后面的所有元素从数组末尾删除并返回它们:
x = ["a", "b", "c", "d", "e", "f", "g"];
y = x.splice(3);
console.log(x); // ["a", "b", "c"]
console.log(y); // ["d", "e", "f", "g"]
酒废2024-12-03 17:42:10
const splitAt = (i, arr) => {
const clonedArray = [...arr];
return [clonedArray.splice(0, i), clonedArray];
}
const [left, right] = splitAt(1, [1,2,3,4])
console.log(left) // [1]
console.log(right) // [2,3,4]
const [left1, right1] = splitAt(-1, [1,2,3,4])
console.log(left1) // []
console.log(right1) // [1,2,3,4]
const [left2, right2] = splitAt(5, [1,2,3,4])
console.log(left1) // [1,2,3,4]
console.log(right1) // []
与其他解决方案相比的一些好处:
- 您可以用一个衬垫获得结果
- 当分割索引下溢或溢出时,结果仍然是正确的。
slice
将无法正确运行。 - 它不会改变原始数组。一些基于拼接的解决方案做到了。
- 只有 1 个
splice
操作,而不是 2 个slice
操作。但您需要进行基准测试以查看是否存在实际性能差异。
~没有更多了~
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
使用 slice,如下所示:
Use slice, as such: