[英]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.