在事情成功之前,一切总看似不可能。——<纳尔逊·曼德拉>
作者:Ashish Lahoti
译者:cl9000
来源:https://codingnconcepts.com/javascript/how-to-divide-array-in-equal-parts-in-javascript/
在本教程中,我们将学习如何使用 Array.splice()
JavaScript中的方法将数组等分。我们还将学习它与 Array.slice()
方法的不同之处。
1. 将数组分为两个相等的部分
我们可以分两步将数组分成两半:
- 使用
length/2
和Math.ceil()
方法找到数组的中间索引, - 使用此中间索引和
Array.splice()
方法获取数组的两个相等部分
1 | const list = [1, 2, 3, 4, 5, 6]; |
Array.splice()
方法通过删除,替换或添加元素来更改数组的内容。请勿将此方法与Array.slice()
用于 复制数组 的方法混淆。
list.splice(0, middleIndex)
从数组中从0索引开始的前3个元素中删除并返回它。list.splice(-middleIndex)
从数组中删除最后3个元素并返回它。
在这两个操作的最后,由于我们从数组中删除了所有元素,因此原始数组为空。
另请注意,在上述情况下,元素数为偶数,如果元素数为奇数,则前半部分将有一个额外的元素。
1 | const list = [1, 2, 3, 4, 5]; |
2. Array.slice和Array.splice
有时您 不希望更改原始数组,也可以通过使用以下 Array.slice()
和 Array.splice()
方法链接起来完成此操作
1 | const list = [1, 2, 3, 4, 5, 6]; |
我们看到原始数组保持不变,因为我们在使用 Array.slice()
删除元素之前先使用 Array.splice()
复制了原始数组。
3. 将数组分为三个相等的部分
让我们定义一个数组,并使用 Array.splice
方法将它们分为三个相等的部分。
1 | const list = [1, 2, 3, 4, 5, 6, 7, 8, 9]; |
让我们分解一下它是如何发生的:
- 我们首先使用提取了thirdPart
list.splice(-threePartIndex)
,它删除了最后3个元素[7、8、9]
,此时list仅包含前6个元素[1、2、3、4、5、6]
。 - 现在,我们使用提取了secondPart
list.splice(-threePartIndex)
,它从剩余list = [1, 2, 3, 4, 5, 6]
中删除了最后3个元素[4,5,6]
,这时list仅包含前3个元素[1,2,3]
,它们是firstPart。
4. Array.splice的更多信息
让我们看一下使用 Array.splice()
方法的更多示例。请注意,array. slice()
在 array. splice()
之前使用过,因为我们不想改变原始数组。如果你想在下面的例子中改变原来的数组,你可以省略array.slice()
。
1 | // Define an array |
- 获取数组的第一个元素
1 | list.slice().splice(0, 1); // [1] |
- 获取数组的前五个元素
1 | list.slice().splice(0, 5); // [1, 2, 3, 4, 5] |
- 获取数组的前五个元素之后的所有元素
1 | list.slice().splice(5); // [6, 7, 8, 9] |
- 获取数组的最后一个元素
1 | list.slice().splice(-1); // [9] |
- 获取数组的最后三个元素
1 | list.slice().splice(-3); // [7, 8, 9] |
参考
- https://codingnconcepts.com/javascript/difference-between-foreach-and-map-in-javascript-array/
- MDN - https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
- MDN - https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/slice
关注【公众号】,了解更多。
赞赏一下 坚持原创技术分享,您的支持将鼓励我继续创作!