对象转换为数组(一个包含多个数组的数组)

6
我正在尝试使用函数将对象文字转换为数组的数组。
使用我拥有的两个示例对象,我要寻找的最终结果是:
从obj1:[["ugh","grr"],["foo","bar"],["blah",138]]
从obj2:["shambala","walawala"],["foofighter","Barstool"],["blahblah",1382342453]]
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,我不知道为什么。其他尝试只会得到未定义。

Array#push 在向数组中添加元素后返回新的数组长度。 - 4castle
3个回答

4
您的代码问题在于您在不必要的情况下使用了 return,请参考以下可用代码:

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

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

function objToArray(objectLiteral) {
  var piece1 = Object.keys(objectLiteral);
  var piece2 = Object.values(objectLiteral);
  var result = [];
  for (var i = 0; i < piece1.length; i++) {
    result.push([piece1[i], piece2[i]])
  }
  return result;
}

console.log(objToArray(obj1));


感谢所有评论/阅读/贡献的人。我非常感激。 - Dabi Lobi
Tha'er,你说得一点不错。这是错误的返回位置。 - Dabi Lobi

2

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

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

var pairs = Object.entries(obj1);

或者,您可以编写一个像这样的entries函数:

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

0

这是我如何实现它的方法。

function objectToArray(obj) {
    return Object.keys(obj).map(function(prop) {
        return [prop, obj[prop]];
    });
}

// ES2015
function objectToArray (obj) {
    return Object.keys(obj).map(prop => [prop, obj[prop]]);
}

查看演示


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接