我需要在foreach循环中以下列格式创建一个对象
var array = ['sent', 'flag']
需要输出对象,如以下格式
obj = {
sent: true,
flag: true
}
尝试
array.forEach(function(data){
console.log('data', data);
var obj = {}
obj.data = true;
})
非常感谢您的帮助。谢谢。
答案 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函数。