开发者问题收集

如何向对象添加数组值

2018-08-29
85

我有一个包含几个值的数组。我想迭代数组并将这些值作为值添加到对象中,从具有 null 值的第二个对象元素开始。我不知道如何正确地做到这一点。这是我的代码

let objectParameters = {
      "current_lang" : currentLang,
      "project_name" : null,
      "project_type" : null,
      "min_price"    : null,
      "max_price"    : null
}

let arrayValues = ["Project name", "Project Type", 150, 950];

arrayValues .forEach(function(item) {

 //Add array value to an object
}

所需输出

let objectParameters = {
      "current_lang" : currentLang,
      "project_name" : "Project name",
      "project_type" : "Project Type",
      "min_price"    : 150,
      "max_price"    : 950
}
3个回答

想出了这个:

let objectParameters = {
      "current_lang" : "currentLang",
      "project_name" : null,
      "project_type" : null,
      "min_price"    : null,
      "max_price"    : null
};

let arrayValues = ["Project name", "Project Type", 150, 950],
  keys = Object.keys(objectParameters);
  
keys.shift() // Removing the first key, which is not null

keys.forEach( (key,i) => objectParameters[key] = arrayValues[i])

console.log(objectParameters)
Jeremy Thille
2018-08-29

您可以使用

Object.keys(objectParameters)

以数组形式获取对象的所有属性,然后从 arrayValues

中为它们分配值,如下所示:

let objectParameters = {
      "current_lang" : "en",
      "project_name" : null,
      "project_type" : null,
      "min_price"    : null,
      "max_price"    : null
}

let arrayValues = ["Project name", "Project Type", 150, 950];


let params = Object.keys(objectParameters);

for(let i = 1; i < params.length; i++) {
  objectParameters[params[i]] = arrayValues[i-1];
}

console.log(objectParameters);
Ahorn
2018-08-29

使用 for in 循环 来遍历对象,并使用 shift() 在每次迭代中获取第一个数组元素,在所有情况下我们都依赖于顺序,这可能不是一个好方法。

let objectParameters = {
    "current_lang" : "currentLang",
    "project_name" : null,
    "project_type" : null,
    "min_price"    : null,
    "max_price"    : null
}

let arrayValues = ["Project name", "Project Type", 150, 950];

for(let p in objectParameters){
    if(!objectParameters[p])
    objectParameters[p] = arrayValues.shift()
}

console.log(objectParameters)

我认为在这种情况下没有必要使用 hasOwnProperty

Emeeus
2018-08-29