我在一个HTML文件中制作了这个JS代码:
<script>
x=[];
x["abc"]={
a:1,
b:2
}
x["def"]={
a:234,
b:5655
}
keyArrayX=x.keys();
console.log(keyArrayX.join());
</script>
渲染文件时,出现此错误:
Uncaught TypeError: keyArrayX.join is not a function
但是keys()
的结果是一个数组,所以我不明白这里有什么问题。我的目标是返回数组中所有键的连接字符串,在这种情况下,它将是:
abc,def
答案 0 :(得分:4)
请使用Object.keys()
代替x.keys()
;
var x = {}
也更适合字典
let x = {};
x["abc"] = {
a: 1,
b: 2
}
x["def"] = {
a: 234,
b: 5655
}
let keyArrayX = Object.keys(x);
console.log(keyArrayX.join());
答案 1 :(得分:2)
“但是keys()的结果是一个数组” ,
keys()
的返回值不是数组。根据{{3}}
返回值
一个新的Array迭代器对象。
如果您想要按键,请使用Object.keys()
let x=[];
x["abc"]={
a:1,
b:2
}
x["def"]={
a:234,
b:5655
}
keyArrayX=Object.keys(x);
console.log(keyArrayX.join());
答案 2 :(得分:0)
您必须使用Object.keys(x)
。
x=[];
x["abc"]={
a:1,
b:2
}
x["def"]={
a:234,
b:5655
}
keyArrayX=Object.keys(x);
console.log(keyArrayX.join());
答案 3 :(得分:0)
确定要在数组而不是对象中设置键吗?
x={}
x.abc = {};// will be the ideal way
x.def= {};
然后获取密钥Object.keys(x)
应该是获得密钥映射的一种方法
它应该记录["abc", "def"]
。
Object.keys
应该在x
上起作用,而不管它是作为数组还是对象分配。