繁体   English   中英

如何将数组值添加到对象

[英]How to add array values to an object

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

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

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

想到了这个:

 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) 

在所有情况下,使用for循环遍历对象和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

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

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

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

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

好吧,如果您得到有序的数组和对象,则此代码可能会帮助您:

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

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

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

然后,您可以按照自己的方式对其进行编辑和优化。 小改进,感谢@Jeremy Thille

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

DEMO

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM