不使用Object.entries()返回键-值对数组的数组

时间:2019-12-30 06:45:36

标签: javascript sub-array

我正在尝试编写一个接受对象并返回键-值对数组数组的函数。我也不能使用Object.entries()函数。

示例:对于var obj = { a: 1, b: 2, c: 3 };,我想返回:[["a",1], ["b",2], ["c",3]]

这是我到目前为止所写的内容:

function entries(obj) {

var result = Object.keys(obj).map(function(key) {
  return [Number(key), obj[key]];
});
}
console.log(
  entries(obj = {"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0})
  );

但是,我现在只能使它返回undefined。我究竟在这里做错了什么?

3 个答案:

答案 0 :(得分:1)

您忘记从[21792:15920:1230/144009.402:ERROR:gcm_channel_status_request.cc(145)] GCM channel request failed. 返回最后的result

entries()

答案 1 :(得分:1)

您可以做一个简单的for循环

var obj= {"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0}
var arr=[]
for(var item in obj){
  arr.push([item,obj[item]])
}
console.log(arr)

答案 2 :(得分:0)

首先让我们分析您的代码并检测一些错误,然后我们将重点放在解决方案上。

function entries(obj) {
  var result = Object.keys(obj).map(function(key) {
    return [Number(key), obj[key]];
  });
}
console.log(
  entries(obj = {"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0})
);

在您的代码中,函数entries不返回任何值。因此,console.log()将返回undefined。我们可以解决将var result =替换为return的问题。因此,现在您的entries函数基于对象obj返回了一个数组。像这样:

function entries(obj) {
  return Object.keys(obj).map(function(key) {
    return [Number(key), obj[key]];
  });
}
console.log(
  entries(obj = {
    "1": 5,
    "2": 7,
    "3": 0,
    "4": 0,
    "5": 0,
    "6": 0,
    "7": 0,
    "8": 0,
    "9": 0,
    "10": 0,
    "11": 0,
    "12": 0
  })
);

现在我们可以优化一点,让我们定义两个对象:objAobjB。第一个是您的第一个示例。

let objA = { a: 1, b: 2, c: 3 };
let objB = {"1":5,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0};

如果您致电console.log(entries(objA)),则会收到NaN错误,因为a不是数字,并且您正在使用Number()方法强制转换{{1} }值。让我们删除该函数调用。这将是该解决方案的最终版本:

key

相关问题