我正在尝试编写一个接受对象并返回键-值对数组数组的函数。我也不能使用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。我究竟在这里做错了什么?
答案 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
})
);
现在我们可以优化一点,让我们定义两个对象:objA
和objB
。第一个是您的第一个示例。
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