2012-07-04 2 views
1

У меня есть два JavaScript объекты:Объединение двух объектов в JavaScript

var attributes1 = { 
    "type": "text/css", 
    "rel": "stylesheet", 
    "href": baseUrl + "Styles/HtmlLibrary.css"  
}; 
var attributes2 = { 
    "type": "text/css", 
    "rel": "stylesheet", 
    "href": baseUrl + "Styles/jquery.contextMenu.css"  
}; 

Я Есть ли способ объединить два объекта в один объект, который имеет два подобъектов (ассоциативные массивы)? Я хочу зациклиться на нем и получить каждый раз один набор атрибутов?

Благодаря

+1

В JS нет понятия ассоциативных массивов, это объекты js. – Blaster

+1

Вы имеете в виду, например, 'var attributes = [{...}, {...}];'? Я рекомендую прочитать [Руководство по JavaScript MDN] (https://developer.mozilla.org/en/JavaScript/Guide), он должен дать вам хорошее представление об основах JS. –

+1

duplicate: http://stackoverflow.com/questions/171251/how-can-i-merge-properties-of-two-javascript-objects-dynamically – Blaster

ответ

3

да это не те массивы, но вы можете иметь массив объектов, я думаю, что вы ищете это:

var attributes = [ 
        { 
        "type": "text/css", 
        "rel": "stylesheet", 
        "href": baseUrl + "Styles/HtmlLibrary.css"  
        }, 
        { 
        "type": "text/css", 
        "rel": "stylesheet", 
        "href": baseUrl + "Styles/jquery.contextMenu.css"  
        }]; 
+0

Спасибо, именно то, что я получил после ... – Ovi

3

Да вы можете легко сделать это: -

var baseUrl="www.google.com" // Base URL just for the sake of program. 
var attributes = { 
    "type": "text/css", 
    "rel": "stylesheet", 
    "href": baseUrl + "Styles/HtmlLibrary.css"  
}; 
var attributes1 = { 
    "type": "text/css", 
    "rel": "stylesheet", 
    "href": baseUrl + "Styles/jquery.contextMenu.css"  
}; 
var k=[]; 
k.push(attributes); 
k.push(attributes1) 

    //Since K has both the associative arrays now you can refer using 
    for(var i=0;i<k.length;i++) 
     { 
     console.log(k[i].type+" "+k[i].rel+" "+k[i].href) 

     } 

Это скрипка URL http://jsfiddle.net/HSdJh/1/

+1

Вы можете просто выполнить команду var var = = [attributes, attributes1]; '. –

+0

Да, это можно сделать. Хотя, если у него более двух ассоциативных массивов, тогда в этом случае, если он хочет динамически войти в них, тогда это будет здорово :) –

1
var attributes1 = { 
    "type": "text/css", 
    "rel": "stylesheet", 
    "href": baseUrl + "Styles/HtmlLibrary.css"  
}; 
var attributes2 = { 
    "type": "text/css", 
    "rel": "stylesheet", 
    "href": baseUrl + "Styles/jquery.contextMenu.css"  
}; 

var combined = {}; 

combined.attributes1 = attributes1; 
combined.attributes2 = attributes2; 


for(var attribute in combined){ 

    if(combined.hasOwnProperty(attribute)){ 
     console.log(attribute); 
     console.log(combined[attribute]); 
    } 

}