2015-04-29 29 views
6

Giống như trong mảng chúng ta có thể thêm các phần tử mới bằng cách sử dụng mảng .push(item). Làm thế nào để thực hiện tương tự với objects? Và nó có thể được thực hiện bên trong đối tượng? Giống như:Làm thế nào để đẩy các phần tử của một đối tượng vào một đối tượng khác?

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

Bạn có muốn tất cả các thuộc tính của đối tượng hoặc chỉ một số thuộc tính không? – vjdhama

+0

Tôi muốn thêm tất cả chúng vào đối tượng khác –

+0

Thử xem câu hỏi này http://stackoverflow.com/questions/171251/how-can-i-merge-properties-of-two-javascript-objects-dynamically – skukx

Trả lời

2

Bạn có thể sử dụng chức năng mở rộng của 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

Tôi có một đối tượng với khoảng 100 thuộc tính. Có cách nào dễ hơn không? –

3

Bạn có thể thêm một số đặc tính của một đối tượng đơn giản như thế này:

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

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

Cập nhật:

Trong trường hợp đó chỉ làm điều này:

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

Và để lọc ra các thuộc tính không mong muốn bên trong cơ thể loop bạn cũng có thể làm điều này:

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

Nó sẽ mất mãi mãi để làm điều này với các đối tượng tôi có trong đó có khoảng 100 tài sản. –

+0

Tôi đã cập nhật câu trả lời. – vjdhama

0

Bạn có thể sử dụng jQuery.extend() chức năng

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

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

Tùy chọn không phải jquery: bạn có thể lặp lại các khóa của đối tượng cần hợp nhất.

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

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

Vào cuối vòng lặp anothObject{lemon: "l", apple: "a", orange: "o"}

1

Để sao chép tất cả các yếu tố của một đối tượng để đối tượng khác, sử dụng Object.assign:

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

Hoặc, phong cách ES6 thanh lịch hơn khi sử dụng spread ... operator:

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

Không Tuy nhiên, trong khi tôi viết điều này, điều này vẫn còn trong giai đoạn đề xuất, mặc dù hỗ trợ khá phổ biến (nó hoạt động trong trình duyệt của tôi).

Các vấn đề liên quan