如何将一个JS对象的数据添加到另一个

时间:2018-08-13 12:51:25

标签: javascript javascript-objects

函数中有一个空的JS对象

var globalDataObject = [{}]; 

然后,有一个遍历用户数组的循环,将每个用户的属性存储在变量(例如namelastName等)中,并为每个用户创建一个对象用户:

//create an object containing the current name 
const currentObject = {
    'profile': {
        'name': nameVariable,
        'lastName': lastNameVariable
    }
};

创建后,将currentObject的数据添加到globalDataObject的正确方法是什么?因此,globalDataObject的结尾应该是:

var globalDataObject = [
    'profile': {
        'name': 'John',
        'lastName': 'Smith'
    },
    'profile': {
        'name': 'Ann',
        'lastName': 'Lee'
    },
    'profile': {
        'name': 'Dan',
        'lastName': 'Brown'
    }
]; 

重要的是,globalDataObject必须是指定格式的JS对象(不是包含多个对象而不是数组的对象),因为一旦创建,它将被转换为{{ 1}}。

2 个答案:

答案 0 :(得分:2)

您可以像数组一样创建全局对象:

globalDataObject = []; 

然后将其推入

globalDataObject.push(currentObject);

答案 1 :(得分:1)

我不明白问题的最终目的,以及为什么您不像以前建议的那样仅使用.push()。您尚未接受该答案,因此我认为这不是最终目标。

  

globalDataObject必须是指定格式的JS对象(不是   包含多个对象而不是数组的对象

1)您提供的格式无效的JavaScript。 2)为什么不能有一个对象数组或带有下一个对象的对象并将其隐藏为xml 3)为什么首先要将json转换为xml。

我将进行一个大胆的猜测,并假设您将globalDataObject输入为数组,并将其表示为具有多个“配置文件”键的对象。都不是有效的javascript。

由于您不能有多个具有相同名称的键,并且期望它们具有不同的值,因此我建议您为每个配置文件使用唯一的“索引”。(例如数组...但是一个对象)。

// init the object
const userProfiles = {};

// then later add to it like this.
let profile1 = {name: "john", lastname: "smith"};
let profile2 = {name: "alice", lastname: "wonderland"};
userProfiles[1] = profile1;
userProfiles[2] = profile2;
// you can then torn it into an array of user profile objects like this
Object.keys(userProfiles).map((index) => {return userProfiles[index];})