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