...일반적인 방법에 대한 개인적인 이해
...확장 연산자로서
여기서 확장은 배열, 문자열 또는 의사 배열을 의미합니다. 배열과 유사함) 아래 첨자를 사용하여 각 항목을 꺼낼 수 있으며 데이터(이하 탐색 가능한 개체라고 함)의 전체 길이 속성을 확장할 수 있습니다. 즉, 배열의 각 항목을 꺼내서 다음과 같이 구분합니다. (사용시 이런 경우이며, 별도로 인쇄할 경우 공백으로 구분됩니다.)
<script> let arr = [ 5, "str", [1,2,3], ["hello","world"], ]; function fn(arr){ console.log(...arr); return [...arr] } function fo(...arr){ console.log(arr); } // function foo(arr){ // return ...arr; // Expression expected. // } console.log(fn(arr)); // 5 "str" (3) [1, 2, 3] (2) ["hello", "world"] // (4) [5, "str", Array(3), Array(2)] // 外面的[]去掉了,但是里面的[1,2,3]、["hello","world"]的[]没有去掉 </script>
// 第一种所有参数都未知function aa(...arr){ console.log(arr);}aa(5,"sss",22) // (3) [5, "sss", 22] => 结果是一个数组// 第二种,有两个已知参数function ff(a,b,...arr){ console.log(arr)}ff(2,3,"str","111") // (2) ["str", "111"] => 结果是一个数组
str.split("") 또는 [...str]
문자열을 변환할 수 있기 때문입니다. 순회 가능한 객체 배열에서 []를 제거하는 방법이 표시되어 있으며 의사 배열에도 사용할 수 있으므로 의사 배열을 사용한 후 의사 배열의 형태를 변환한 후 []를 추가하는 것이 실제임을 이해하기 쉽습니다. 배열이며 실제 배열의 메서드를 호출할 수 있습니다. => […arr.]
순회 가능한 객체에 루프를 사용하기 때문에 원본 배열을 변경하지 않고 얕은 복제 작업을 수행하므로 배열 Shallow copy에 사용할 수 있습니다. => […arr]
<script> // 简单的二维数组(一个数组里面又套了一个数组 => 二维) let arr = [ 5, "str", [1,2,3], ["hello","world"], ]; // 三维数组(一个数组里面套一个数组,里面又套一个数组) let arr1 = [ 5, "str", [ 1,2,3, ["ccc","dddd"] ], ["hello","world"], ]; function flatten(arr){ return [].concat(...arr); } function flatten1(arr){ return [].concat(...arr.map(x => Array.isArray(x) ? flatten1(x) : x)); } console.log(flatten(arr)); // (7) [5, "str", 1, 2, 3, "hello", "world"] console.log(flatten1(arr)); // (7) [5, "str", 1, 2, 3, "hello", "world"] console.log(flatten(arr1)); // (8) [5, "str", 1, 2, 3, Array(2), "hello", "world"] console.log(flatten1(arr1)); // (9) [5, "str", 1, 2, 3, "ccc", "dddd", "hello", "world"] </script>
위에서 볼 수 있듯이 배열 구조가 매우 간단한 경우(2차원) 스프레드 연산자는 배열 내부를 풀고 concat을 사용하여 접합할 수 있습니다. 그러나 배열이 다차원인 경우 더 깊은 배열을 해결할 수 없습니다. 이를 달성하려면 확산 연산자와 재귀를 사용해야 합니다.
추천 학습: "javascript 기본 튜토리얼"
위 내용은 JavaScript의 스프레드 연산자의 일반적인 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!