我的两个数组是:
const values = ['Master Clean', '45', '650']
const names = ['servicemenus.$.name', 'servicemenus.$.duration', 'servicemenus.$.cost']
结果应该是这样的:
{ 'servicemenus.$.name':'Master Clean', 'servicemenus.$.duration': '45', 'servicemenus.$.cost': 650}
答案 0 :(得分:1)
因为我认为你知道这两个数组在任何时候都需要相同的长度。这个for
循环可以帮助您:
const values = ['Master Clean', '45', '650']
const names = ['servicemenus.$.name', 'servicemenus.$.duration', 'servicemenus.$.cost']
var obj = {}
for (var i = 0; i < names.length; i++) {
//or check with: if (values.length > i) { assignment }
obj[names[i]] = values[i];
}
console.log(obj);
输出将是这样的:
Object { servicemenus.$.name: "Master Clean", servicemenus.$.duration: "45", servicemenus.$.cost: "650" }
为了完成,我发现这个问题对您也有帮助:Merge two arrays into one Json object
答案 1 :(得分:0)
假设两个数组的长度总是相等,我们可以使用其中一个作为构建对象的循环的基础:
let resultingObject = {};
names.forEach((name, i) => {
resultingObject[name] = values[i];
});
console.log(resultingObject);
答案 2 :(得分:0)
您可以reduce将数组设置为单个值(在您的情况下为object
)。 Reduce
函数接受累加器,当前值和index
,您可以使用它来引用第二个数组中的值。 Object.assign使用您的键/值构造一个对象。
const values = ['Master Clean', '45', '650'];
const names = ['servicemenus.$.name', 'servicemenus.$.duration', 'servicemenus.$.cost'];
const res = names.reduce((acc, cur, i) => Object.assign(acc, {[cur]: values[i]}), {});
console.log(res)
&#13;
答案 3 :(得分:0)
您可以使用forEach
中的数组索引来引用另一个并动态构建对象键:
const values = ['Master Clean', '45', '650']
const names = ['servicemenus.$.name', 'servicemenus.$.duration', 'servicemenus.$.cost']
let update = { };
names.forEach( (name,idx) => {
update[name] = values[idx];
});
这会给你结果
答案 4 :(得分:0)
使用for,遍历对象属性并为其指定新对象
var newobj = {};
for( var i in names){
newobj[names[i]] = values[i];
}
console.log(newobj);