javascript - array.push() 方法抛出 TypeError

标签 javascript arrays

我正在尝试使用 array.reduce() 实现 array.map()。这是我到目前为止所拥有的:

function arrayMap(arr, fn) {
    return arr.reduce(function(a, elem) {
        return a.push(fn(elem));
    }, []);
}

let x = arrayMap([1, 2, 3], function(elem) {
    return elem * 2;
});

console.log(x);

但是口译员给我:

TypeError: a.push is not a function

即使累加器 'a' 被提供为 reduce 为空数组。

最佳答案

Array#push方法返回数组的长度,而您正在返回长度。因此在下一次迭代中,a 将是一个数字 (1) 而不是数组。

要使其正常工作,您需要返回数组引用。

function arrayMap(arr, fn) {
    return arr.reduce(function(a, elem) {
        a.push(fn(elem));
        return  a;
    }, []);
}

function arrayMap(arr, fn) {
  return arr.reduce(function(a, elem) {
    a.push(fn(elem));
    return a;
  }, []);
}

let x = arrayMap([1, 2, 3], function(elem) {
  return elem * 2;
});

console.log(x);


实际上,Array#reduce使它变得过于复杂的方法是使用 Array#map 是一个更好的主意。方法代替。

function arrayMap(arr, fn) {
    return arr.map(fn);
}

function arrayMap(arr, fn) {
  return arr.map(fn);
}
let x = arrayMap([1, 2, 3], function(elem) {
  return elem * 2;
});

console.log(x);

关于javascript - array.push() 方法抛出 TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41226490/

相关文章:

javascript - 如何以编程方式在 iPad 上滚动窗口?

javascript 多重下载 pdf ie

java - 无法使用 get(index) 显示对象数组

Python NumPy 数组

javascript - 使用环绕在一维阵列网格中查找邻居的更优雅的方法?

php - 检查数组中的字符串的一部分

javascript - 如何使用jquery ajax和codeigniter执行编辑和删除操作

javascript - 内联 javascript 不适用于 WebView

javascript - :touch CSS pseudo-class or something similar?

javascript - 无法拼接子数组