为什么不能对.keys()的结果调用.join()?

时间:2019-05-08 05:28:33

标签: javascript arrays key

我在一个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

4 个答案:

答案 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上起作用,而不管它是作为数组还是对象分配。