按其内部数组中的每个值拆分对象

时间:2015-12-30 11:43:26

标签: javascript arrays

我有一个对象,其中包含一个键和一个包含一些值的数组。

var obj1 = {
   'key': '1',
   'values': ['a', 'b', 'c']
}

var obj2 = {
   'key': '10',
   'values': ['a', 'b']
}

我想在我的values数组中的每个值的其他对象中将其拆分为以下结果:

obj1 = 'key': '1', 'value':'a', 'index': '0';
obj2 = 'key': '1', 'value':'b', 'index': '1';
obj3 = 'key': '1', 'value':'c', 'index': '2';

obj4 = 'key': '10', 'value': 'a', 'index': '0';
obj5 = 'key': '10', 'value': 'b', 'index': '1';

有任何想法吗?

4 个答案:

答案 0 :(得分:1)

试试这个例子

var brief = function(obj) {
  var tmp = [],
    i = 0,
    l = obj.values.length;
  while (i < l)
    tmp.push({
      key: obj.key,
      index: i,
      value: obj.values[i++]
    });
  return tmp;
};


var obj1 = brief({
  key: '1',
  values: ['a', 'b', 'c']
});

var obj2 = brief({
  key: '2',
  values: ['a', 'c']
});

document.write("<pre>");
document.write(JSON.stringify(obj1));
document.write("<br/>");
document.write(JSON.stringify(obj2));
document.write("</pre>");

答案 1 :(得分:1)

朋友,它会是这样的:

tmp = [];
obj1.values.forEach(function (e, i) {
  tmp.push({key: obj1.key, value: e, index: i})
});
console.log(tmp);

答案 2 :(得分:0)

假设你想要

obj1 =[ { key: '1', value:'a', index: '0' },
       { key: '1', value:'b', index: '1'},
       { key: '1', value:'c', index: '2' }]

function splitArray( obj )
{
  var output = [];
  var keyValue = obj.key;
  var values = obj.values;
  for ( var counter = 0; counter < values.length; counter++ )
  {
     output.push( {
        key : keyValue,
        value : values[ counter ],
        index : counter
     } );
  }

  return output;
}

console.log( splitArray( obj1 ) );

答案 3 :(得分:0)

function getTransformedObjects(obj) {
  var ans = [];
  if (obj.values) {
    obj.values.forEach(function(value, index) {
      var temp = {
        'key': obj.key,
        'value': value,
        'index': index
      };
      ans.push(temp);

    })
  }
  return ans;
}

//for display purpose
// usage
var obj1 = {
  key: '1',
  values: ['a', 'b', 'c']
}

console.log(getTransformedObjects(obj1));
$('.old').html(JSON.stringify(obj1))
$('.new').html(JSON.stringify(getTransformedObjects(obj1)));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div>old object</div>
<div class='old'></div>
<div>Trasnformed object</div>
<div class='new'></div>

调用传递旧对象的函数作为参数,并获取所需格式的对象数组。