如何将数组值添加到对象

时间:2018-08-29 12:29:33

标签: javascript

我有一个值很少的数组。我想遍历数组并将这些值添加到对象中,作为具有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
}

6 个答案:

答案 0 :(得分:1)

您可以使用获取对象的所有属性

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);

答案 1 :(得分:1)

对此:

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)

答案 2 :(得分:1)

使用for in loop遍历对象,并使用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

答案 3 :(得分:0)

如果您知道数组中相应值的索引,则不需要循环,只需执行以下操作即可:

objectParameters["project_name"] = arrayValues[0]
objectParameters["project_type"] = arrayValues[1]  
...

如果在创建对象时具有数组值,则可以在对象创建时使用它们:

let objectParameters = {
      "current_lang" : "en",
      "project_name" : arrayValues[0],
      ...
}

答案 4 :(得分:0)

好吧,如果您订购了数组和对象,则此代码可能会帮助您:

        var obj = {
            'first': '1',
            'second': '2'
        };

        var arr = ['first', 'sec'];

        Object.keys(obj).forEach(function (key, arrIndex) {
           obj[key] = arr[arrIndex];
        });

然后按所需方式对其进行编辑和优化。 没什么改善,感谢@Jeremy Thille

答案 5 :(得分:0)

如果您的arrayValues格式值相同,则可以使用单独的键,并为数组值和reduce()使用Destructuring_assignment方法。

演示

const keys = ["project_name", "project_type", "min_price", "max_price"],
  arrayValues = ["Project name", "Project Type", 150, 950];

let result = arrayValues.reduce((r, v, i) => {
  return { ...r,
    [keys[i]]: v
  }
}, {current_lang:navigator.language});


console.log(result)
.as-console-wrapper {max-height: 100% !important;top: 0;}