JavaScript 数组方法 slice() 的 5 个示例

嘿,您发送的代码片段示例有问题...让我向您解释一下以查看错误。
1 .复制数组并保存原始数据: 您编写的示例是 arrNumbers.slice,但它没有指定参数。
这在这里有效。
调用不带参数的fragment() 会复制整个数组,创建浅表副本。
原始数组编号未修改。
例如: JavaScript 常量原始 = [1 , 2 , 3 ]; const 复制 = 原始.slice(); 副本(4 ); 控制台.log(原始); // [1 , 2 , 3 ](不变) 控制台.log(复制); // [1 , 2 , 3 , 4 ] 这没有问题。
2 、细分提取; 例子还是arrNumbers.slice,语句是“从指定索引开始”。
这取决于具体情况。
如果它采用像 arrNumbers.slice(1 ) 这样的参数,那么从数据 1 到数组末尾的子切片是 [2 , 3 ]。

但是你写的是arrNumbers.slice,它没有参数。
这与第一个示例类似,这意味着复制整个数组。
这里的描述不够清楚。
3 . 从最后一小节开始: 该示例仍然是 arrNumbers.slice,并且说明是“使用负索引”。
这是正确的。
例如,arrNumbers.slice(-2 ) 采用最后两个元素。
但同样,编写 arrNumbers.slice 时不要指定与以前相同的参数。
你的例子中是什么样的安排?如果只有 [1 , 2 ],则截断 (-2 ) 将返回 [1 , 2 ]。
4 . 将类数组对象转换为数组: 这个例子写得比较正确。
你提到的{0:'a', 1 :'b', length:2 }实际上是一个数组。
直接 slice.call(arrLike) 或分布运算符 ...arrLike 可以将其转换为 ['a', 'b']。
但是你说“直接在普通对象上调用fragment会引发错误”,这很好,因为fragment是数组原型上的方法。
你举的例子很好。
5 . 交叉列表排序: 这基本上是正确的。
document.querySelectorAll 返回一个具有 long 属性但不是数组的 NodeList。
您可以使用skin()转换为数组,例如Array.from(nodeList)或nodeList.slice()(即使切片本身不转换nodeList,它们也可能返回数组。
您说“进行更方便的数组操作”,这是正确的。

总结一下您的问题: 主要原因是前三个示例都使用不带参数的 arrNumbers.slice 语句,因此您会得到重复的示例,并且需要复制整个数组或对于细分没有具体的解释。
另外,示例代码在指定“从引用索引开始”和“使用负索引”时没有提供参数,这导致很难理解要指定的内容。
建议更改: 我们先解释一下前三个例子的参数:
复制整个:arrNumbers.slice()(无参数)
提取子切片(从头开始):arrNumbers.slice(1 )(查找索引 1 到结束 [2 , 3 ]);
提取子集(从尾部开始):arrNumbers.slice(-2 )(找到最后两个元素)
这样例子和指令就相关了。
另外两个例子也很好。

无论如何,这取决于你。
最主要的是前三个例子的代码和描述要一致。

JavaScript 数组操作必须熟练运用的10个方法

说白了,JavaScript的数组方法只有那么几个,但是正确使用它们可以为你省去很多麻烦。
首先我们来说说最重要的map和filter。
我们去年做的一个项目中,我们用地图来分割3 000级的数据。
它是用两行代码完成的,而且它甚至不比循环快一点。
还有一点就是查找和索引特别适合精确搜索。
例如,如果您找到用户列表中的第一个VPI,则可以直接查看条件,而不必自行绕过去判断。
代码很干净。
还有另一个重要的细节。
缩小规模固然有效,但不要让它使任务变得过于复杂。
例如,像总结这样的简单任务很难用在减法中。
说实话,这非常棘手。

一开始我以为foreach和for...没有什么区别,但后来我发现我错了。
除了……现金之外,每个都不能被破坏。
等等,还有别的事。
For...不应该在谈判中使用。
返回索引,而不是值。
很多人没有注意到这一点。
每个和某些之间的差异也值得尝试。
使用每一个以确保它们都满意,如果满意,则使用一些。
选择哪一种取决于您的需求。

最后提醒:不要忘记减法的初始成本。
如果你忘记了,第一个元素将是第一个值,整个逻辑就会被破坏。