5

関数を使用して、オブジェクト リテラルを配列の配列に変換しようとしています。

私が持っている 2 つのサンプル オブジェクトを使用すると、私が探している最終結果は次のようになります。

[ ["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)

上記のことから、次のことを達成できました。

[ ["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))

これが私にできる最善のことですが、1 を取得し続け、その理由がわかりません。他の試みは未定義で終わります。

4

3 に答える 3