[javascript] 배열에 객체를 추가하는 방법

javascript 또는 jquery에서 배열에 객체를 어떻게 추가 할 수 있습니까? 예를 들어,이 코드의 문제점은 무엇입니까?

function(){
    var a = new array();
    var b = new object();
    a[0]=b;
}

이 코드를 사용하여 function1의 배열에 많은 객체를 저장하고 array2의 객체를 사용하기 위해 function2를 호출하고 싶습니다.

  1. 배열에 객체를 어떻게 저장할 수 있습니까?
  2. 객체를 배열에 넣고 변수에 저장하려면 어떻게해야합니까?


답변

Array.push ()를 사용하여 배열에 무엇이든 넣습니다.

var a=[], b={};
a.push(b);
// a[0] === b;

배열에 대한 추가 정보

한 번에 둘 이상의 항목 추가

var x = ['a'];
x.push('b', 'c');
// x = ['a', 'b', 'c']

배열의 시작 부분에 항목 추가

var x = ['c', 'd'];
x.unshift('a', 'b');
// x = ['a', 'b', 'c', 'd']

한 배열의 내용을 다른 배열에 추가

var x = ['a', 'b', 'c'];
var y = ['d', 'e', 'f'];
x.push.apply(x, y);
// x = ['a', 'b', 'c', 'd', 'e', 'f']
// y = ['d', 'e', 'f']  (remains unchanged)

두 배열의 내용으로 새 배열을 만듭니다.

var x = ['a', 'b', 'c'];
var y = ['d', 'e', 'f'];
var z = x.concat(y);
// x = ['a', 'b', 'c']  (remains unchanged)
// y = ['d', 'e', 'f']  (remains unchanged)
// z = ['a', 'b', 'c', 'd', 'e', 'f']


답변

var years = [];
for (i= 2015;i<=2030;i=i+1)
{
years.push({operator : i})
}

여기서 배열 연도는 다음과 같은 값을 갖습니다.

years[0]={operator:2015}
years[1]={operator:2016}

이렇게 계속됩니다.


답변

우선, 어떤이없는 objectarray. 있다 ObjectArray. 둘째, 당신 수 있습니다 :

a = new Array();
b = new Object();
a[0] = b;

이제 유일한 요소로 a배열이 b됩니다.


답변

ES6표기법을 사용하면 다음과 같이 할 수 있습니다.

추가하려면 다음 과 같이 스프레드 연산자를 사용할 수 있습니다 .

var arr1 = [1,2,3]
var obj = 4
var newData = [...arr1, obj] // [1,2,3,4]
console.log(newData);


답변

  • JavaScript는 대소 문자를 구분 합니다. 존재하지 않기 때문에 전화하고을 new array()( new object()를) 던질 것 ReferenceError입니다.
  • 오류가 발생하기 쉬운 행동new Array() 으로 인해 피하는 것이 좋습니다 .
    대신을 사용하여 새 배열을 할당하십시오 . 개체의 경우
    = [val1, val2, val_n]= {} .
  • John의 답변에 표시된 것처럼 배열을 확장하는 방법에는 여러 가지가 있지만 가장 안전한 방법은 concat대신에 사용하는 것입니다 push. concat원래 배열은 그대로두고 새 배열을 반환합니다. 특히 배열이 전역 적으로 정의 된 경우 피해야push 하는 호출 배열을 변경합니다 .
  • 의도하지 않은 돌연변이를 피하기 위해 새로운 배열뿐만 아니라 객체 를 고정 시키는 것도 좋습니다 . 고정 된 개체는 변경하거나 확장 할 수 없습니다 (얕게).

이러한 점을 적용하고 두 가지 질문에 대답하기 위해 다음과 같은 기능을 정의 할 수 있습니다.

function appendObjTo(thatArray, newObj) {
  const frozenObj = Object.freeze(newObj);
  return Object.freeze(thatArray.concat(frozenObj));
}

용법:

// Given
const myArray = ["A", "B"];
// "save it to a variable"
const newArray = appendObjTo(myArray, {hello: "world!"});
// returns: ["A", "B", {hello: "world!"}]. myArray did not change.


답변

Gabi Purcaru의 답변을 확장하여 2 번 답변을 포함합니다.

a = new Array();
b = new Object();
a[0] = b;

var c = a[0]; // c is now the object we inserted into a...


답변

/* array literal */
var aData = [];

/* object constructur */
function Data(firstname, lastname) {
  this.firstname = firstname;
  this.lastname = lastname;
  this.fullname = function() {
    return (this.firstname + " " + this.lastname);
  };
}

/* store object into array */
aData[aData.length] = new Data("Java", "Script"); // aData[0]

aData.push(new Data("Jhon", "Doe"));
aData.push(new Data("Anna", "Smith"));
aData.push(new Data("Black", "Pearl"));

aData[aData.length] = new Data("stack", "overflow"); // aData[4]

/* loop arrray */
for (var x in aData) {
  alert(aData[x].fullname());
}

/* convert array of object into string json */
var jsonString = JSON.stringify(aData);
document.write(jsonString);