2016-09-30 1 views
-2

Позвольте мне посмотреть, знаю ли я, как объяснить.как я могу поместить их в объект через итерацию? JS

У меня есть массив

["5", "sam 99912222", "bob 33312222", "tom 11122222", "harey 12299933", "echo 99914442", "sam", "edward", "harry", "hungry", "bob"] 

, но я хочу сделать "sam 99912222", "bob 33312222", "tom 11122222", "harey 12299933", "echo 99914442" в объект в качестве ключа и значения.

Как я могу это сделать?

+0

Так что вы хотите {сэм: 99912222, бод: 3331222} и т.д., что вы хотите сделать с "5", а просто сэм, эдуард, гарри и т.д. – Keith

ответ

0
var myArray = ["5", "sam 99912222", "bob 33312222", "tom 11122222", "harey 12299933", "echo 99914442", "sam", "edward", "harry", "hungry", "bob"] 

var myObject = myArray.reduce(function(acc, item) { 
    var pair = item.split(' '); 
    if (pair.length === 2) { 
    acc[pair[0]] = pair[1]; 
    }; 
    return acc; 
}, {}); 
0

Вы также можете сделать следующее. Это учитывает множество пробелов;

var arr = ["5 ", "sam 99912222", " bob 33312222", " tom 11122222 ", "harey 12299933", "echo 99914442", "sam", "edward ", "harry", " hungry", "bob"], 
 
mapped = arr.map(s => /\w\s+\w/.test(s) ? s.trim() 
 
              .split(/\s+/) 
 
              .reduce((p,c) => ({[p]:c})) 
 
             : s.trim()); 
 
console.log(mapped);