programing

JavaScript에서 어레이의 선두에 새로운 어레이 요소를 추가하려면 어떻게 해야 합니까?

kingscode 2022. 10. 1. 21:08
반응형

JavaScript에서 어레이의 선두에 새로운 어레이 요소를 추가하려면 어떻게 해야 합니까?

어레이의 선두에 요소를 추가하거나 추가할 필요가 있습니다.

예를 들어 어레이가 다음과 같은 경우:

[23, 45, 12, 67]

그리고 제 AJAX 전화의 응답은34갱신된 어레이는 다음과 같습니다.

[34, 23, 45, 12, 67]

현재는 다음과 같이 할 예정입니다.

var newArray = [];
newArray.push(response);

for (var i = 0; i < theArray.length; i++) {
    newArray.push(theArray[i]);
}

theArray = newArray;
delete newArray;

더 좋은 방법이 있을까요?JavaScript에는 이 기능을 하는 기능이 내장되어 있습니까?

내 방법의 복잡성은O(n)또, 보다 뛰어난 실장을 실현하는 것도 매우 흥미롭습니다.

를 사용합니다.마지막이 아닌 배열의 선두에 요소가 추가되어 있는 것을 제외하고, 와 같습니다.

  • unshift/push- 어레이의 시작/끝에 요소를 추가합니다.
  • shift/pop- 어레이의 첫 번째/마지막 요소를 제거하고 반환합니다.

간단한 도표...

   unshift -> [array] <- push
   shift   <- [array] -> pop
 

및 차트:

          add  remove  start  end
   push    X                   X
    pop           X            X
unshift    X             X
  shift           X      X

MDN 어레이의 메뉴얼을 참조해 주세요.어레이에서 요소를 푸시/팝하는 기능이 있는 거의 모든 언어에는 언시프트/시프트 기능(일명 '시프트 기능')도 있습니다.push_front/pop_front) 요소를 직접 구현할 필요는 없습니다.


코멘트에서 지적한 바와 같이 원래 어레이의 변형을 피하고 싶다면 를 사용하여 여러 어레이를 연결할 수 있습니다.이를 통해 단일 요소를 기존 배열의 전면 또는 후면에 푸시할 수 있습니다.그러려면 새 요소를 단일 요소 배열로 변환해야 합니다.

const array = [3, 2, 1]

const newFirstElement = 4

const newArray = [newFirstElement].concat(array) // [ 4, 3, 2, 1 ]

console.log(newArray);

concat항목을 추가할 수도 있습니다.에 대한 인수concat는 임의의 타입으로 할 수 있습니다.아직 어레이가 아닌 경우에는 암묵적으로 싱글패키지 배열로 랩됩니다.

const array = [3, 2, 1]

const newLastElement = 0

// Both of these lines are equivalent:
const newArray1 = array.concat(newLastElement) // [ 3, 2, 1, 0 ]
const newArray2 = array.concat([newLastElement]) // [ 3, 2, 1, 0 ]

console.log(newArray1);
console.log(newArray2);

어레이 조작 이미지

var a = [23, 45, 12, 67];
a.unshift(34);
console.log(a); // [34, 23, 45, 12, 67]

ES6의 경우 산포 연산자 사용...:

데모

var arr = [23, 45, 12, 67];
arr = [34, ...arr]; // RESULT : [34,23, 45, 12, 67]

console.log(arr)

또 다른 방법은,concat:

var arr = [1, 2, 3, 4, 5, 6, 7];
console.log([0].concat(arr));

의 차이점concat그리고.unshift그것이다concat새 배열을 반환합니다.그들 사이의 공연은 여기서 수 있다.

function fn_unshift() {
  arr.unshift(0);
  return arr;
}

function fn_concat_init() {
  return [0].concat(arr)
}

테스트 결과는 다음과 같습니다.

여기에 이미지 설명을 입력하십시오.

빠른 치트시트:

shift/unshift 및 push/pop이라는 용어는 적어도 C의 프로그래밍에 익숙하지 않은 사람들에게는 다소 혼란스러울 수 있습니다.

이 용어가 익숙하지 않은 경우 대체 용어의 간단한 번역을 다음에 나타냅니다.기억하기 쉬울 수 있습니다.

* array_unshift()  -  (aka Prepend ;; InsertBefore ;; InsertAtBegin )     
* array_shift()    -  (aka UnPrepend ;; RemoveBefore  ;; RemoveFromBegin )

* array_push()     -  (aka Append ;; InsertAfter   ;; InsertAtEnd )     
* array_pop()      -  (aka UnAppend ;; RemoveAfter   ;; RemoveFromEnd ) 

ES6 파괴 사용(원래 어레이로부터의 돌연변이를 회피):

const newArr = [item, ...oldArr]

변환 없음

모든 것이unshift/push ★★★★★★★★★★★★★★★★★」shift/pop 소스 어레이를 변환합니다.

unshift/pushbegin/shift/pop배열의 시작/끝에서 항목을 제거합니다.

그러나 변환 없이 항목을 배열에 추가하는 방법은 거의 없습니다.그 결과, 어레이의 끝에 추가하는 새로운 어레이가 됩니다.아래의 코드를 사용해 주세요.

const originArray = ['one', 'two', 'three'];
const newItem = 4;

const newArray = originArray.concat(newItem); // ES5
const newArray2 = [...originArray, newItem]; // ES6+

원래의 어레이의 선두에 추가하려면 , 다음의 코드를 사용합니다.

const originArray = ['one', 'two', 'three'];
const newItem = 0;

const newArray = (originArray.slice().reverse().concat(newItem)).reverse(); // ES5
const newArray2 = [newItem, ...originArray]; // ES6+

위의 방법으로 변환 없이 어레이의 시작/끝에 추가합니다.

: 어: you you이가습 you you you you you you you you 。var arr = [23, 45, 12, 67];

하려면 , 「 」를 합니다.splice:

var arr = [23, 45, 12, 67];
arr.splice(0, 0, 34)
console.log(arr);

배열에 새 요소를 추가하는 치트시트

1. Array#unshift

const list = [23, 45, 12, 67];

list.unshift(34);

console.log(list); // [34, 23, 45, 12, 67];

2. Array#splice

const list = [23, 45, 12, 67];

list.splice(0, 0, 34);

console.log(list); // [34, 23, 45, 12, 67];

3. ES6 스프레드...

const list = [23, 45, 12, 67];
const newList = [34, ...list];

console.log(newList); // [34, 23, 45, 12, 67];

4. Array#concat

const list = [23, 45, 12, 67];
const newList = [32].concat(list);

console.log(newList); // [34, 23, 45, 12, 67];

주의: 각 예에서는 삽입할 항목을 추가함으로써 여러 항목을 추가할 수 있습니다.

가 있는 는, 「배열」의 선두에 요소를 는, 「배열」을 사용하는 이 빠릅니다.push 이 이어집니다.reverse를 호출하지 「」를 호출합니다.unshift★★★★★★★★★★★★★★★★★★.

벤치마크 테스트: http://jsben.ch/kLIYf

「」를 사용합니다.splice시작 시 요소를 배열에 삽입합니다.

arrName.splice( 0, 0, 'newName1' );

여기에는 몇 가지 방법이 있습니다.

  1. 시프트 사용(변동 가능)

const num = 1;
const arr = [2, 3];
arr.unshift(num);
console.log(arr);

  1. ES6 파괴 사용(불변)

const num = 1;
const arr = [2, 3];
const newArr = [num, ...arr];
console.log(newArr);

  1. Array.protype.concat 사용(불변)

const num = 1;
const arr = [2, 3];
const newArr = [num].concat(arr);
console.log(newArr);

, 를 합니다.<func>.apply(<this>, <Array of args>):

const arr = [1, 2];
arr.unshift.apply(arr, [3, 4]);
console.log(arr); // [3, 4, 1, 2]

let arr = [5, 6];

// using unshift
arr.unshift(4);
console.log('arr : ', arr);

// using spread operator 
arr = [3, ...arr];
console.log('arr : ', arr);

// using concat
arr = [2].concat(arr);
console.log('arr : ', arr);

// using splice
arr.splice(0, 0, 1)
console.log('arr : ', arr);

언급URL : https://stackoverflow.com/questions/8073673/how-can-i-add-new-array-elements-at-the-beginning-of-an-array-in-javascript

반응형