배열의 시작 부분에 요소를 추가하거나 추가해야합니다.
예를 들어 내 배열이 다음과 같은 경우
[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배열 대신 배열의 시작 부분에 요소를 추가한다는 점을 제외하면 같습니다 .
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) 할 수있는 기능이 있으므로 직접 구현할 필요는 없습니다.
주석에서 지적했듯이 원래 배열을 변경하지 않으려면을 사용 concat하면 두 개 이상의 배열을 함께 연결할 수 있습니다. 이를 사용하여 단일 요소를 기능적으로 기존 어레이의 앞면 또는 뒷면에 밀어 넣을 수 있습니다. 이렇게하려면 새 요소를 단일 요소 배열로 바꿔야합니다.
const array = [ 3, 2, 1 ]
const newFirstElement = 4
const newArray = [newFirstElement].concat(array) // [ 4, 3, 2, 1 ]
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 ]
답변
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)
}
테스트 결과는 다음과 같습니다
답변
빠른 치트 시트 :
시프트 / 언 시프트 및 푸시 / 팝이라는 용어는 적어도 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 ) 
답변
배열이 있습니다.  var arr = [23, 45, 12, 67];
처음에 항목을 추가하려면 다음을 사용하십시오 splice.
var arr = [23, 45, 12, 67];
arr.splice(0, 0, 34)
console.log(arr);
답변
돌연변이없이
실제로 모든 unshift/ push및 shift/ 는 원점 배열을 pop 변경 합니다.
은 unshift/ push시작 / 끝에서 존재 배열에 항목을 추가 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+
위의 방법으로, 돌연변이없이 배열의 시작 / 끝에 추가합니다.