2014-02-07 4 views
0

У меня есть два массиваJavascript формат массива для диаграмм

A =[1990,1991,....] 
B=[a,b,c,d,e,f,...] 

Я хочу, чтобы результирующий массив в этом формате

Resultant=[{ 
       name: 1990, 
       data: [a,b,c] 

      },{ 
       name: 1991, 
       data: [d,e,f] 

      },... 
      ] 

Пожалуйста, помогите мне, как я буду делать это с помощью для петель?

+0

Так что вы хотите разделить Аргументы B каждые 3 пунктов ? – ltalhouarne

+0

См. Здесь для начала: [Доступ/процесс (вложенные) объекты, массивы или JSON] (http://stackoverflow.com/questions/11922383/access-process-nested-objects-arrays-or-json) –

+0

не сплит длина массива A и будет известна и основана на том, что для использования в цикле мы должны это сделать. –

ответ

0

Как об этом:

var b= ["a","b","c","d","e","f"]; 
var result = [1990,1991].map(function(n){ return { name:n, data: b.splice(0,3)} }); 
+0

Это работает, но значение данных не получается правильно, оно получает 0 значений. –

+0

Отчасти работает спасибо за логику. Но в данных значения неверно получаются. вы можете это исправить? –

+0

данные - массив, возвращающий массив. Я думаю, что все мы сделали это так. – Dalorzo

0

Это будет форматировать данные с Array.prototype.map, основываясь на вашем (довольно расплывчатым) требования:

var A = [1990,1991]; 
var B = ["a","b","c","d","e","f"]; 

var formatted = A.map(function (name, i) { 
    return { 
     name: name, 
     data: B.slice(i*3, i*3+3) 
    } 
}); 

/*[ 
    { 
     "name": 1990, 
     "data": [ 
      "a", 
      "b", 
      "c" 
     ] 
    }, 
    { 
     "name": 1991, 
     "data": [ 
      "d", 
      "e", 
      "f" 
     ] 
    } 
]*/ 
0

Если предположить, что для каждого из А, вы хотите данные для хранения 3 элементов B. Я застрял с вашим требование использования для циклов.

var Resultant = []; 
for (var i = 0; i < a.length; i++) { 
    var data = []; 
    for (var j = 0; j < 3, B.length > 0; j++) { 
     data.push(B.shift()); 
    } 

    Resultant.push({name: A[i], 'data': data}); 
} 
+0

Пробовал, но данные не корректно. Пожалуйста, помогите мне. –

0

Это работает для меня:

http://jsfiddle.net/s5zdD/ < - см jsfiddle показать

A =[1990,1991,1992]; 
B=['a','b','c','d','e','f','g','h','i']; 

var Resultant = jQuery.map(A, function(i,v){ 
// if no jQuery use: 
// var Resultant = A.map(function(i,v){ 
    return { 
     'name':A[v], 
     'data': B.splice(0,3) 
    } 
}) 

console.log(Resultant); 
Смежные вопросы