我希望按键提取dict值,并且我尝试使用concat()函数将这些值添加到空数组中,但是它会打印值但是在它们的内部自己的数组(至少它看起来是这样的,因为每个值都由唯一的括号组包围)。
var dict = {Name: 'Chris', Height: 150, Location: 'New York'};
var dictVal = new Array();
for (var key in dict) {
var val = dict[key];
console.log(dictVal.concat(val));
}
如何合并这些值,使它们位于自己的一组括号中,以表示dictVal
中的值列表?
答案 0 :(得分:2)
您可以在现代浏览器中执行以下操作;
var dict = {Name: 'Chris', Height: 150, Location: 'New York'},
dictValues = Object.values(dict);
console.log(dictValues);
答案 1 :(得分:2)
你犯的错误是Array.concat
返回一个新的数组意思
dictVal = dictVal.concat(val);
是您想要的结果,以获得您想要的结果。或者你也可以做
for (var key in dict) {
var val = dict[key];
dictVal.push(val);
console.log(dictVal);
}
如果您不想生成新数组。
此外,还有更好的方法可以执行您想要的操作,例如将对象的键映射到值:
var dict = {Name: 'Chris', Height: 150, Location: 'New York'};
var dictVal = Object.keys(dict).map(key => dict[key]);
通过Object.keys
进行迭代通常比for...in
更好,因为
Object.keys()方法返回给定对象自己的可枚举属性的数组,其顺序与for ... in循环提供的顺序相同(不同之处在于for-in循环枚举原型链中的属性也是如此)。
和Array.map
只会为您节省几行代码。
另外,使用new Array()
的旁注通常并不常见。你想要做
var dictVal = []
只是为了更好地符合常见的JS惯例。