Javascript 循环数组数组(hashmap)和平方数(使用map函数)

Javascript 循环数组数组(hashmap)和平方数(使用map函数),javascript,ecmascript-6,Javascript,Ecmascript 6,这是我的代码(不起作用),我要做的是循环遍历hashmap并返回一个新的带有平方数的hashmap,以便任何hashmap作为参数进入函数pow。我想用ES6的方式来做 var numbers = {}; numbers['two'] = [2, 4, 9]; numbers['one'] = [1, 2, 3]; function pow(arr){ for (var x in arr){ x.map(function(value)){ return value*value;

这是我的代码(不起作用),我要做的是循环遍历hashmap并返回一个新的带有平方数的hashmap,以便任何hashmap作为参数进入函数pow。我想用ES6的方式来做

 var numbers = {};
numbers['two'] = [2, 4, 9];
numbers['one'] = [1, 2, 3];
function pow(arr){
 for (var x in arr){
  x.map(function(value)){
    return value*value;
  }
 }
}          
pow(numbers);

正如Rocket在上面所评论的,当使用for…in循环时,x是索引,而不是实际值。您需要在循环中使用
arr[x]
而不是简单地使用
x


您可以使用
arr.forEach()
以更直观的方式迭代数组的值,但该方法存在兼容性问题,因此您使用该方法的能力可能取决于您运行代码的位置。(更多信息。)但是,在这种情况下,正如Lucas在评论中指出的那样,您传递的是一个对象,而不是数组,因此
forEach()
将不起作用。

这就是您要寻找的……正如前面所述,for循环中的x是索引。您可以使用arr[x]来获取数组,例如数字['one']。您必须使用返回的新映射重新定义arr[x]。这就成功了。在ES6中,您可以分解结构,然后进行循环。如果你愿意的话,请随便问

function pow(hm) {
    for (var x in arr) {
        hm[x] = hm[x].map(function(value) {
            return value*value;
        });
    }

    return hm;
}
好吧,我解决了`

var numbers = {};
 numbers['one'] = [2, 4, 9];
 numbers['two'] = [1, 6, 8];
function pow(arr) {

     var arr1 = arr.map(function(value) {
          return value*value;
        });
    return arr1;
  }
console.log(pow(numbers['two']));
pow(numbers['two']);

`这就是我想要的-当您使用
for.

时,它就在这里。在
中,您的
x
是键,而不是对象的值。您有一个参数
arr
,但您传递的是一个对象(“hashmap”),而不是数组。除了用箭头函数替换函数表达式之外,对于ES6,您不会有任何不同。既然您已经标记了这个ES6,为什么不使用
Map
来表示
的循环数呢?OP说“返回一个新的hashmap”,所以不要分配给
arr