.map()不是reduce()中的函数

时间:2019-03-05 20:00:29

标签: javascript

我有以下代码:

map(res => {
    const finalRows = res.reduce((acc, curr) => {
      return [
        ...acc,
        ...curr.map(row => ({
          ...row,
          chevron: ' ',
        }))
      ]
    }, []);
.....

'res'看起来像一个对象数组,这些对象是行。使用reduce(),它应该返回一个数组,但是我正在使用map遍历当前的每一行并添加一个“ Chevron”列。我觉得也许它尚不知道它正在返回一个数组,并且仍然将其视为对象,因此我收到了错误“ curr.map不是函数”,但是,我不确定这是否是真实的问题。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

让我们深入了解您的代码:

  • 正如您所说,res是一个对象数组
  • .reduce的回调的第二个参数是所提供数组中的当前项
  • 所以currres的一项

但是在这里,curr似乎不是数组,而是另一种类型的对象(如JSON),这就是为什么会出现此错误的原因。

只有在res是一个数组数组的情况下,它才能起作用,因为无法在非数组对象上调用.map

此外,另一种更简单的代码编写方式是:

// For each row of the `res` array...
res.map(row => {
  // Clone it, so the new row isn't linked to the existing one
  const newRow = row.slice(0);
  // Set its 'chevron' property
  newRow.chevron = ' ';
  // Return the new row
  return newRow;
}); // Here we get the new array of objects