将 dict 的所有值放入一个数组中

Put all values of dict in an array

我正在寻找按键提取 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 中的值列表?

您可以在现代浏览器中进行如下操作;

var dict       = {Name: 'Chris', Height: 150, Location: 'New York'},
    dictValues = Object.values(dict);
console.log(dictValues);

你犯的错误是 Array.concat returns 一个新数组意味着

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 更可取,因为

The Object.keys() method returns an array of a given object's own enumerable properties, in the same order as that provided by a for...in loop (the difference being that a for-in loop enumerates properties in the prototype chain as well).

Array.map只是为您节省了几行代码。


另外,使用 new Array() 作为旁注通常不常见。你想做

var dictVal = []

只是为了更好地符合常见的 JS 约定。