2016-01-28 9 views
0

Пожалуйста, простите меня за то, что вы не знаете, как это сделать. Я думаю, мы должны использовать функцию карты или так, но я не получаю ее.Преобразование javascript-объекта в другой формат

Вот мои данные об объекте.

data 
[0]: 
    name: 'Alex' 
    sex: 'Male' 
    new_joinee: false 
[1]: 
    name: 'Anna' 
    sex: 'female' 
    new_joinee: true 
[2]: 
    name: 'lester' 
    sex: 'Male' 
    new_joinee: true 

Я хочу, чтобы преобразовать выше объект в эту форму

data 
name: 'Alex', 'Anna', 'lester' 
sex: 'Male', 'Female','Male' 
new_joinee: false,true,true 

Может кто-то дайте мне знать, как этого добиться.

+1

что вы пробовали? –

+1

Вы хотите переформатировать объект или хотите показать его по-разному в пользовательском интерфейсе? –

+0

@ Daniel_L- Я проверил карту, уменьшил и отфильтровал функции и не нашел способ сделать это. – Ayesha

ответ

2
//Input data 
var data = [ 
    {name: 'Alex', sex: 'Male', new_joinee: false}, 
    {name: 'Anna', sex: 'female', new_joinee: true}, 
    {name: 'lester', sex: 'Male', new_joinee: true} 
]; 

//Initialize the output object 
out = {}; 
for(var k in data[0]) { 
    out[k] = []; 
} 

//Collect data from all input objects 
data.forEach(function(item){ 
    for(var k in item) { 
    out[k].push(item[k]); 
    } 
}); 

приводит:

out == 
{ name: [ 'Alex', 'Anna', 'lester' ], 
    sex: [ 'Male', 'female', 'Male' ], 
    new_joinee: [ false, true, true ] } 
1

Я предполагаю, что ваши данные массив объектов

var data = parse(data) 

function parse(data){ 
    var parsedData = { name: '', sex: '', new_joinee: ''}; 
    data.forEach(function(item){ 
    parsedData.names += item.name; 
    parsedData.sex += item.sex; 
    parsedData.new_joinee += item.new_joinee; 

    }); 
return parsedData; 
} 
+0

привет Zohaib- я получаю сообщение об ошибке data.forEach не является функцией – Ayesha

+1

извините, я переопределяю эту переменную, а также забыл добавить аргумент в определение функции –

+0

Я исправил его. Я думаю, он будет работать сейчас –

1

Если это ваш исходные данные:

var initialData = 
[ 
    {name: 'Alex', sex: 'Male', new_joinee: false}, 
    {name: 'Anna', sex: 'female', new_joinee: true}, 
    {name: 'lester', sex: 'Male', new_joinee: true} 
]; 

Вы можете преобразовать данные к чему-то другому следующим образом:

var transformed = { 
    name: [], 
    sex: [], 
    new_joinee: [] 
}; 

initialData.forEach(function (element) { 
    transformed.name.push(element.name); 
    transformed.sex.push(element.sex); 
    transformed.new_joinee.push(element.new_joinee); 
}); 

{ 
    name: ['Alex', 'Anna', 'lester'], 
    sex: ['Male', 'female', 'Male'], 
    new_joinee: [false, true, true] 
} 
1

Если подчеркивают в проекте:

var keys = _.keys(myObj) 
var foo = { 
    name: _.pick(myObj, 'name'), 
    sex: _.pick(myObj, 'sex'), 
    newJoinee:_.pick(myObj, 'new_joinee') 
} 

_.each(keys, function(key) { console.log(key + ' ' + foo[key].join(', ')) }) 
Смежные вопросы