2012-04-12 37 views
5

Giả sử tôi có một vài đối tượng javascriptLàm thế nào tôi có thể thêm đối tượng javascript để đối tượng khác trong động

{"type":"gotopage","target":"undefined"} 
{"type":"press","target":"a"} 
{"type":"rotate","target":"long"} 

Làm thế nào tôi có thể thêm này các đối tượng đến một đối tượng như

config={} 

Tôi biết làm thế nào để nếu mỗi chèn đối tượng có một id tôi có thể thêm vào như:

config["id"]={} 

Nhưng trong trường hợp này như thế nào tôi có thể thêm các đối tượng mà không cần id?

Trả lời

6

Tôi nghĩ bạn đang trộn lẫn các đối tượng và mảng. Các đối tượng có các khóa có tên, các mảng có các phím số. Bạn có thể dễ dàng thêm vào một mảng sử dụng .push():

var arr = []; 
arr.push("something"); 

Tuy nhiên, đối với một đối tượng cấu hình như tên biến của bạn cho thấy đây không phải là thực sự hữu ích. Bạn chứ không nên sử dụng tên có ý nghĩa cho các tùy chọn của bạn, ví dụ:

var config = { 
    something: 'blah', 
    foo: 'bar' 
}; 

Bạn cũng có thể lưu trữ một mảng trong đối tượng của bạn:

config.manyStuff = []; 
for(...) { 
    manyStuff.push(...); 
} 
1

Nếu những dữ liệu bạn có là cùng loại, sau đó sử dụng một mảng thay vì:

var some_data = {"type":"gotopage","target":"undefined"} 

var config = []; 
var config.push(some_data); //and do this for the rest 

Và bạn có thể truy cập vào các mục cấu hình như thế này:

var someVariable = config[index]; //where index is a number starting from 0 
10
var obj1 = {"type":"gotopage","target":"undefined"}; 

var config = {}; 
config.obj1 = obj1; 

Bạn có thể luôn thêm chúng sau này.

var obj1 = {"type":"gotopage","target":"undefined"}; 

var config = {}; 
config.obj1 = obj1; 

var obj2 = {"key":"data"}; 
config.obj2 = obj2; 
+1

nhưng tôi không biết có bao nhiêu obj tôi có, tôi không thể xác định họ trước đây – hh54188

0

Nếu bạn đang tìm kiếm để thêm chúng trong intialization, điều này có thể giúp bạn ra:

var config = [ 
       {"type":"gotopage","target":"undefined"}, 
       {"type":"press","target":"a"}, 
       {"type":"rotate","target":"long"} 
       ] 
0

tôi đang sử dụng chức năng tiện ích này:

module.exports.combine = function() { 

    var rv = {}; 
    for (i = 0; i < arguments.length; i++) { 
    for (thing in arguments[i]) { 
     rv[thing]=arguments[i][thing]; 
    } 
    } 
    return rv; 
} 

Thuộc tính có cùng tên sẽ được ghi đè bởi các thuộc tính trong lập luận sau

var util = require('lib/util.js'); 
console.log(util.combine(
    {"1":"one","two":function(){;}, 
    {"four":{"four.5":"four.5-b"}, "5":"foo"}}); 

kết quả:

{ '1': 'one', 
    '5': 'foo', 
    two: [Function], 
    four: { 'four.5': 'four.5-b' } } 
Các vấn đề liên quan