[javascript] 객체에 요소 추가

json 파일을 채워야합니다. 이제 다음과 같은 내용이 있습니다.

{"element":{"id":10,"quantity":1}}

그리고 다른 “요소”를 추가해야합니다. 첫 번째 단계는를 사용하여 해당 json을 Object 유형으로 만드는 것입니다 cart = JSON.parse. 이제 새 요소를 추가해야합니다. cart.push다른 요소를 추가 하는 데 사용해야한다고 생각 했습니다.

var element = {};
element.push({ id: id, quantity: quantity });
cart.push(element);

그러나 내가하려고 할 때 “개체에 메소드 푸시가 없습니다”라는 오류가 발생했습니다 element.push. 어딘가에서 “요소”를 말하지 않기 때문에 내가 잘못한 것 같습니다.

어떻게해야합니까?

편집 : 내 머리에 많은 혼란이 있었기 때문에 죄송합니다.

에서 데이터를 가져올 때 객체 유형 만 얻을 수 있다고 생각 JSON.parse했지만 처음에는 JSON에 넣은 것을 얻습니다.

객체 대신 배열을 넣으면 문제가 해결되었으며 여기에 얻은 많은 제안을 사용했습니다. 모두 감사합니다!



답변

요소가 배열이 아니지만 많은 요소 개체를 지원하려면 장바구니가 배열이어야합니다. 코드 예 :

var element = {}, cart = [];
element.id = id;
element.quantity = quantity;
cart.push(element);

장바구니를 양식의 객체 배열로 만들려면 { element: { id: 10, quantity: 1} }다음을 수행하십시오.

var element = {}, cart = [];
element.id = id;
element.quantity = quantity;
cart.push({element: element});

JSON.stringify() 의견에서 우려로 언급되었습니다.

>> JSON.stringify([{a: 1}, {a: 2}])
      "[{"a":1},{"a":2}]" 


답변

그 줄로

var element = {};

element일반 객체로 정의 합니다. 기본 JavaScript 객체에는 push()메소드 가 없습니다 . 일반 객체에 새 항목을 추가하려면 다음 구문을 사용하십시오.

element[ yourKey ] = yourValue;

반면에 다음을 element사용하여 배열로 정의 할 수 있습니다

var element = [];

그런 다음을 사용하여 요소를 추가 할 수 있습니다 push().


답변

카트가 배열이 아닌 객체로 저장되어야하는 경우 ([]로 저장하는 것이 좋습니다) 항상 ID를 키로 사용하도록 구조를 변경할 수 있습니다.

var element = { quantity: quantity };
cart[id] = element;

이를 통해 다음과 같이 카트에 여러 항목을 추가 할 수 있습니다.

cart["1"] = { quantity: 5};
cart["2"] = { quantity: 10};

// Cart is now:
// { "1": { quantity: 5 }, "2": { quantity: 10 } }


답변

객체에 추가하려면 Object.assign

var ElementList ={}

function addElement (ElementList, element) {
    let newList = Object.assign(ElementList, element)
    return newList
}
console.log(ElementList)

산출:

{ “element”: { “id”: 10, “quantity”: 1}, “element”: { “id”: 11, “quantity”: 2}}


답변

당신은 var element = [];
자바 스크립트 {}로 작성해야 합니다 빈 개체이며 []빈 배열입니다.


답변

cart.push({"element":{ id: id, quantity: quantity }});


답변

유용하다면이 시도와 관련된 것을 읽고있었습니다.

1. 물체 내부의 푸시 기능을 정의합니다.

let obj={push:function push(element){ [].push.call(this,element)}};

이제 배열처럼 요소를 푸시 할 수 있습니다

obj.push(1)
obj.push({a:1})
obj.push([1,2,3])

이 객체를 생성합니다

obj={
 0: 1
 1: {a: 1}
 2: (3) [1, 2, 3]
 length: 3
}

요소에 색인이 추가되고 객체에 새로운 길이 속성이 추가 된 것을 확인할 수 있습니다. 이것은 객체의 길이도 찾는 데 유용 push()합니다.