首先让我们分析您的代码并发现一些错误,然后我们将专注于解决方案。
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。我们可以用return 替换var result = 来解决这个问题。所以现在你的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() 方法转换key 值。让我们删除该函数调用。这将是解决方案的最终版本:
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};
function entries(obj) {
return Object.keys(obj).map(function(key) {
return [key, obj[key]];
});
}
console.log(entries(objA));
console.log(entries(objB));