2016-07-03 3 views
0

В моей JavaScript, у меня есть JSON, как это,подсчета количества JSon индекса массива

var text = '{"employees":['+ 
    '{"firstName":"John","lastName":"Doe" },' + 
    '{"firstName":"Anna","lastName":"Smith" },' + 
    '{"firstName":"Peter","lastName":"Jones" }' + 
']}'; 

я использовал код ниже, чтобы разобрать мой JSON. obj1 = JSON.parse(text);

Что я хочу сделать, это сохранить элементы массива json с помощью массива js (var chartData1 = [];). Я использовал нижний цикл для хранения json-массива в chartData []. я был в состоянии успешно хранить массив JSON в пределах chartData [], давая состояние массива, как я < 2.

вот мой цикл,

for(i=0; i<=2; i++) 
{ 
    chartData1.push([ obj1.employees[i]['firstName'], obj1.employees[i]['lastName'] ]) 
} 

, что я хотел бы сделать, это взять из что '2' из условного оператора с в цикле for и заменить его переменной или выражением. я искал во многих потоках, я обнаружил, что могу использовать obj1.employees.length; (Somthing вроде этого), но это не работает в моем случае. Поскольку я полностью новичок в js, я хотел бы получить некоторую помощь от экспертов. я извиняюсь за свой английский. Не стесняйтесь указывать мне, если я где-то ошибаюсь. благодарит заранее.

+0

'для (вар я = 0; я

Однако, есть лучше и короче решение, используя Array.prototype.map функцию:

var obj1 = { "employees": [ 
 
    { "firstName": "John", "lastName": "Doe" }, 
 
    { "firstName": "Anna", "lastName": "Smith" }, 
 
    { "firstName": "Peter", "lastName": "Jones" } 
 
]}; 
 

 
var chartData1 = obj1.employees.map(e => [e.firstName, e.lastName]); 
 

 
console.log(JSON.stringify(chartData1));

+0

спасибо большое. Это сработало для меня! :) –

0

Здесь также другое раствор:

var json = JSON.parse(text); 
for(var index in json.employees){ 
    var employee = json.employees[index]; 
    console.log(employee.firstName, employee.lastName); 
} 
0

После парсинга text вы получите объект JSON, единственным свойством которого является employees. По существу, если вы var parsedContents = JSON.parse(text); значение parsedContents является:

{ 
    "employees": [ 
     { "firstName": "John", "lastName": "Doe" }, 
     { "firstName": "Anna", "lastName": "Smith" }, 
     { "firstName": "Peter", "lastName": "Jones" } 
    ] 
} 

Следовательно, вы можете получить employees массив с JSON.parse(text).employees и перебирать массив с Array.prototype.forEach и друзьями. Вот окончательный ответ:

var employees = JSON.parse(text).employees; 

employees.forEach(function (employee) { 
    chartData1.push(employee.firstName, employee.lastName); 
}); 
Смежные вопросы