2015-06-24 4 views
0

У меня есть требование, чтобы создать объект в следующем формате внутри цикла ЕогеаспСоздание объекта внутри Еогеасп

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

нужен объект вывода, как в следующем формате

obj = { 
sent: true, 
flag: true 
} 

Попробованная

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

Ваша помощь очень ценится. Спасибо.

ответ

4

Вам нужно создать объект за пределами цикла, а затем использовать скобку для присвоения свойства.

В вашем коде на каждой итерации массива вы создаете локальный объект и устанавливаете в нем свойство, называемое data.

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

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

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

+0

Большое вам спасибо – Dibish

1

Попробуйте

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

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

 
console.log(obj);

0

использование сокращения и повторного использования функции вместо Foreach:

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

Преимущество функции reduce() не в необходимости кодировать имя переменной пользовательского объекта, используя функции anon для каждого массива.

Смежные вопросы