2015-04-29 22 views
6

Podobnie jak w tablicach, możemy dodawać nowe elementy za pomocą tablicy .push(item). Jak zrobić to samo z objects? I czy można to zrobić wewnątrz obiektu? Jak:Jak przenieść elementy obiektu do innego obiektu?

var myObject={apple: "a", orange: "o"}; 
var anothObject = {lemon: "l", myObject}; 
+0

Czy chcesz wszystkie właściwości obiektu lub tylko niektóre? – vjdhama

+0

Chcę dodać wszystkie do innego obiektu –

+0

Spróbuj spojrzeć na to pytanie http://stackoverflow.com/questions/171251/how-can-i-merge-properties-of-two-javascript-objects-dynamicznie – skukx

Odpowiedz

2

Można używać rozszerzenia funkcji jQuery: http://api.jquery.com/jquery.extend/

var object1 = { 
    apple: 0, 
    banana: { weight: 52, price: 100 }, 
    cherry: 97 
}; 
var object2 = { 
    banana: { price: 200 }, 
    durian: 100 
}; 

// Merge object2 into object1 
$.extend(object1, object2); 
0
var myObject={apple: "a", orange: "o"}; 
myObject.lemon = 1; // myObject is now {apple: "a", orange: "o", lemon: 1} 
+1

Mam obiekt o około 100 właściwościach. Czy istnieje prostszy sposób? –

3

Można dodać kilka właściwości obiektu po prostu tak:

obj = {a : "1", b : "2"}; 

myObj = {c: "3", d : "4"}; 
myObj.a = obj.a; 
myObj.b = obj.b; 

Aktualizacja:

W takim przypadku po prostu to zrobić:

for(var prop in obj) myObj[prop] = obj[prop]; 

I odfiltrować niechciane właściwości wewnątrz ciała pętli można też to zrobić:

for (var prop in obj) { 
    if (obj.hasOwnProperty(prop)) { 
     myObj[prop] = obj[prop]; 
    } 
} 
+0

Wymagałoby to wieczności, aby to zrobić z obiektem, który mam, który ma około 100 właściwości. –

+0

Zaktualizowałem odpowiedź. – vjdhama

0

Można użyć jQuery.extend() funkcja

var myObject={apple: "a", orange: "o"}; 
var anothObject = {lemon: "l"}; 

jQuery.extend(myObject, anothObject); 
console.log(myObject); 
0

Opcja nie-jquery: można wykonać iterację kluczy obiektu, który ma zostać scalony.

var myObject={apple: "a", orange: "o"}; 
var anothObject = {lemon: "l"}; 

Object.keys(myObject).forEach(function(key) { 
    anothObject[key] = myObject[key]; 
}); 

Pod koniec pętli anothObject jest {lemon: "l", apple: "a", orange: "o"}

1

Aby skopiować wszystkie elementy jednego obiektu do innego obiektu, użyj Object.assign:

var myObject = { apple: "a", orange: "o" }; 
var anothObject = Object.assign({ lemon: "l" }, myObject); 

Albo, bardziej elegancko styl ES6 użyciu spread ... operator:

var myObject = { apple: "a", orange: "o" }; 
var anothObject = { lemon: "l", ...myObject }; 

Nie Jednak, o ile to piszę, jest to wciąż na etapie propozycji, chociaż wsparcie jest dość powszechne (działa w mojej przeglądarce).

Powiązane problemy