如何从对象(键,值对)创建2d数组

时间:2013-10-10 16:19:09

标签: javascript

例如,我有对象:

o = {a: 1, b: 2, c: 3}

我需要编写返回2d数组的函数:

arr = [['a', 'b', 'c'], [1, 2, 3]];

现在我有创建简单数组的函数,但我不知道如何从那里开始(未找到知识)。功能:

function keysAndValues(o){
  var arr= []; 
  for(key in data)
  {   
      arr.push(key);
      //or
      arr.push(data[key]);

  }
  return arr;
};

如何创建二维数组?

修改

所有答案都是正确的,我学到了很多新东西。非常感谢你们。坏事只有一个可以得到绿色箭头,所以它将转到第一个给出答案的人。

5 个答案:

答案 0 :(得分:2)

需要有三个数组,一个在索引0和1处包含两个数组的外部数组。然后只需推送到相应的数组:

function keysAndValues(data){
  var arr= [[],[]]; //array containing two arrays
  for(key in data)
  {   
      arr[0].push(key);
      arr[1].push(data[key]);
  }
  return arr;
};

JS小提琴: http://jsfiddle.net/g2Udf/

答案 1 :(得分:2)

你可以使arr一个最初包含2个空数组的数组,然后将元素推入这些数组中。

function keysAndValues(data) {
  var arr = [[], []];
  for (key in data) {
    if (data.hasOwnProperty(key)) {
      arr[0].push(key);
      arr[1].push(data[key]);
    }
  }
  return arr;
}

答案 2 :(得分:2)

我将采用图书馆方法,因为每个人都使用下划线_.keys_.values

写下他们对主题的看法
_.keys(o);

将返回o个键,而

_.values(o)

将返回o个值。所以从这里你可以做到

arr = [_.keys(o), _.values(o)]

答案 3 :(得分:1)

function keysAndValues(o){
var arr = new Array([] ,[]); 
for(key in o)
  {   
    arr[0].push(key);
    arr[1].push(o[key]);

  }
return arr;
};

你基本上想要一个包含两个数组的数组: 0:所有键 1:所有值

因此将所有键输入arr [0]并将所有值输入arr [1]

答案 4 :(得分:1)

您可以使用for in循环迭代对象,将键和值添加到单个数组,并返回包含这两个生成数组的数组:

var o = {a: 1, b: 2, c: 3}

function keyValueArray (o) {
  var keys = [];
  var values = [];

  for (var k in o ) {
    keys.push(k);
    values.push(o[k]);
  }
  return [keys,values]
}

keyValueArray(o);

jsfiddle