Object to Array(数组的数组)

Dab*_*obi 5 javascript arrays methods object arrayofarrays

我正在尝试使用函数将对象文字转换为数组数组。

使用我拥有的两个示例对象,我正在寻找的最终结果是:

[ ["ugh","grr"] , ["foo", "bar"] , ["blah" , 138] ] 从 obj1

[ "shambala","walawala"] , ["foofighter","Barstool"] , ["blahblah",1382342453] ] 从 obj2

var obj1 = {
  ugh: "grr",
  foo: "Bar",
  blah: 138
}; 

var obj2 = {
  shambala: "walawala",
  foofighter: "Barstool",
  blahblah: 1382342453
};

var piece1 = Object.keys(obj1);

var piece2 = Object.values(obj1);

var result = [ ];

for (var i = 0; i < piece1.length; i++) {
 result.push([piece1[i] , piece2[i]])
 }

console.log(result)
Run Code Online (Sandbox Code Playgroud)

根据我上面的内容,我已经能够实现:

[ ["ugh","grr"] , ["foo", "bar"] , ["blah" , 138] ] 从 obj1

但是我对如何通过函数实现相同的输出感到困惑。

这似乎是一件很简单的事情。

function objToArray(objectLiteral) {

var piece1 = Object.keys(objectLiteral);

var piece2 = Object.values(objectLiteral);

var result = [ ];

for (var i = 0; i < piece1.length; i++) {
 return result.push([piece1[i] , piece2[i]])
  }
 } 

console.log(objToArray(obj1))
Run Code Online (Sandbox Code Playgroud)

这是我能做的最好的事情,但我一直得到 1,我不知道为什么。其他尝试我只是以未定义结束。

Sim*_*leJ 2

如果您的环境支持它,您可以使用Object.entries:

var obj1 = {
  ugh: "grr",
  foo: "Bar",
  blah: 138
};

var pairs = Object.entries(obj1);
Run Code Online (Sandbox Code Playgroud)

或者,您可以编写entries如下函数:

function entries(object) {
  const pairs = [];
  for(let key in object) {
    if(object.hasOwnProperty(key)) {
      pairs.push([key, object[key]]);
    }
  }
  return pairs;
}
Run Code Online (Sandbox Code Playgroud)