在foreach中创建一个对象

时间:2015-06-24 05:55:14

标签: javascript arrays object

我需要在foreach循环中以下列格式创建一个对象

var array = ['sent', 'flag']

需要输出对象,如以下格式

obj = {
sent: true,
flag: true
}

尝试

array.forEach(function(data){
    console.log('data', data);
    var obj = {}
    obj.data = true;
})

非常感谢您的帮助。谢谢。

3 个答案:

答案 0 :(得分:4)

您需要在循环外部创建对象,然后使用括号表示法来分配属性。

在数组的每次迭代中的代码中,您正在创建一个本地对象,并在其中设置一个名为data的属性。



var array = ['sent', 'flag'];

var obj = {}
array.forEach(function(data) {
  obj[data] = true;
})

document.body.innerHTML = JSON.stringify(obj)




答案 1 :(得分:1)

试试这个



var array = ['sent', 'flag']
var obj = {};

array.forEach(function(el) {
  if (!obj[el]) {
    obj[el] = true;
  }
});

console.log(obj);




答案 2 :(得分:0)

使用reduce和可重用的函数代替forEach:

function setTrue(a,b){ a[b]=true; return a; }
var obj1 = ['sent', 'flag'].reduce(setTrue, {});
var obj2 = ['sent2', 'flag2'].reduce(setTrue, {});

reduce()的优点是不必为每个数组收集编写自定义对象变量名称 - 使用anon函数。