将数组合并到对象和对象到数组

时间:2014-11-22 14:37:02

标签: javascript arrays json

所以我在这里遇到一些棘手的问题:

我从这个函数获得5x2数组

for (var i = 0; i < 5; i++) {
    var name = $('.lesson-space:eq( ' + i + ' ) > .lesson').map(function(){return $(this).data('name');}).get();
    var color = $('.lesson-space:eq( ' + i + ' ) > .lesson').map(function(){return $(this).data('color');}).get();
  };

对于这5次重复中的每一次,我想将两个数组放入像这样的对象

     {
        "name": "deutsch",
        "color": "red"
      },
      {
        "name": "mathe",
        "color": "blue"
      },
      {
        "name": "sport",
        "color": "darkblue"
      },
      {
        "name": "franz",
        "color": "yellow"
      }

这些对象现在应放入数组中。所以最后我想把5个数组(从第一个代码剪断)放入一个像这样的数组

[
[
    ...
],[
    ...
],[
    ...
],[
    ...
],[
    ...
]

我知道这有点复杂......

3 个答案:

答案 0 :(得分:1)

据我所知你想做这样的事情

var res  = [],
    data = {}; 

for (var i = 0; i < 5; i++) {

  data = $('.lesson-space:eq( ' + i + ' ) > .lesson').map(function () {
    var name  = $(this).data('name');
    var color = $(this).data('color');

    if (!name || !color) {
      return null;
    }

    return {
      name:  name,
      color: color
    }
  }).get();

  res.push(data);
}

答案 1 :(得分:1)

我不确定我是否正确理解了您的要求,但我认为这是您正在寻找的

var result = [];
for (var i = 0; i < 5; i++) {
    result.push($('.lesson-space:eq('+i+') > .lesson').get().map(function(){
        return {
            name: $(this).data('name'),
            color: $(this).data('name')
        };
    }));
}

console.log(result);

答案 2 :(得分:0)

这应该有效

var mainArray = [];

for (i = 0; i < name.length; i++) {
    var o = {};
    o.name = name[i];
    o.color = color[i];
    mainArray.push([o])
}