Javascript 循环数组数组(hashmap)和平方数(使用map函数)
这是我的代码(不起作用),我要做的是循环遍历hashmap并返回一个新的带有平方数的hashmap,以便任何hashmap作为参数进入函数pow。我想用ES6的方式来做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;
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
。