如何将两个数组合并到一个将值赋给名称的对象中?

时间:2017-05-22 11:37:55

标签: javascript arrays mongodb

我的两个数组是:

const values = ['Master Clean', '45', '650']
const names = ['servicemenus.$.name', 'servicemenus.$.duration', 'servicemenus.$.cost']

结果应该是这样的:

{ 'servicemenus.$.name':'Master Clean',  'servicemenus.$.duration': '45', 'servicemenus.$.cost': 650}

5 个答案:

答案 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使用您的键/值构造一个对象。

&#13;
&#13;
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;
&#13;
&#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);