Javascript 类型';无效[]和#x27;不可分配给类型';Foo[]和#x27;

Javascript 类型';无效[]和#x27;不可分配给类型';Foo[]和#x27;,javascript,reactjs,angular,typescript,ramda.js,Javascript,Reactjs,Angular,Typescript,Ramda.js,我正在使用ramdamap和forEach方法,但当我将鼠标悬停在结果变量上时。它给出了以下错误: 类型“void[]”不能分配给类型“Foo[]”。 数据类型Foo,并且代码是正确的,对此我有信心 我知道我缺少一条return语句。我不知道该在哪里补充。 有人能帮我解决这个问题吗 interface Foo { a: number; d: number; c: number; } const col = ["a", "d", "c

我正在使用ramda
map
forEach
方法,但当我将鼠标悬停在
结果
变量上时。它给出了以下错误:

类型“void[]”不能分配给类型“Foo[]”。

数据类型
Foo
,并且代码是正确的,对此我有信心

我知道我缺少一条
return
语句。我不知道该在哪里补充。

有人能帮我解决这个问题吗

interface Foo {
  a: number;
  d: number;
  c: number;
}

const col = ["a", "d", "c"];
    const arr = [{ a: 1, c: 2, d: 3 }];

    const ress: Foo[] = map(_item => {
      const item = _item;
      forEach(c => {
        const val = item[c];
        delete item[c];
        item[c] = val;
      }, col);
    }, arr);

映射函数总是将一个对象映射到另一个对象。意味着它拿了一些东西,还了一些东西

但在这里,你不会归还任何东西,因为它是无效的

我想应该是这样

const col = ["a", "d", "c"];
    const arr = [{ a: 1, c: 2, d: 3 }];

    const ress: Foo[] = map(_item => {
      const item = _item;
      forEach(c => {
        const val = item[c];
        delete item[c];
        item[c] = val;
      }, col);
      return item
    }, arr);


  };

映射函数总是将一个对象映射到另一个对象。意味着它拿了一些东西,还了一些东西

但在这里,你不会归还任何东西,因为它是无效的

我想应该是这样

const col = ["a", "d", "c"];
    const arr = [{ a: 1, c: 2, d: 3 }];

    const ress: Foo[] = map(_item => {
      const item = _item;
      forEach(c => {
        const val = item[c];
        delete item[c];
        item[c] = val;
      }, col);
      return item
    }, arr);


  };

你可以写得简单得多:

const col=[“a”、“d”、“c”];
常量arr=[{a:1,c:2,d:3}];
const项目=(列,列)=>
arr.map(o=>col.reduce((a,b)=>({…a[b]:o[b]}),{}))
控制台日志(项目(col、arr))

//~>[{a:1,d:3,c:2}]
你可以写得简单得多:

const col=[“a”、“d”、“c”];
常量arr=[{a:1,c:2,d:3}];
const项目=(列,列)=>
arr.map(o=>col.reduce((a,b)=>({…a[b]:o[b]}),{}))
控制台日志(项目(col、arr))


//~>[{a:1,d:3,c:2}]
您没有从
映射返回任何东西。不清楚你想要什么do@DanielA.White你现在能看一下吗。我更新了代码你必须在map中有一个
return
语句,否则你就得不到任何回报。@M-N是的,我知道,但我不知道在哪里添加它。你能修好吗?@ScottSauyet是的,先生,这是一个旧帐户,但我没有使用它。我最近很活跃。当然,我会记住你的话,并从现在开始尝试回答你没有从
map
返回任何东西。不清楚你想要什么do@DanielA.White你现在能看一下吗。我更新了代码你必须在map中有一个
return
语句,否则你就得不到任何回报。@M-N是的,我知道,但我不知道在哪里添加它。你能修好吗?@ScottSauyet是的,先生,这是一个旧帐户,但我没有使用它。我最近很活跃。当然,我会记住你的话,从现在开始我会尽力回答谢谢你的帮助:)谢谢你的帮助:)非常感谢斯科特的帮助。非常感谢:)const col=[“a”、“d”、“c”];常量arr=map(项=>选取(列,项),数据);//[{a:1,c:2,d:3}];项目(col,arr)在项目运行之前,我正在执行拾取和映射操作。我怎样才能把这两个操作组合成一个语句?@newbie:我没有按照你的意思去做。但这听起来似乎是一个不同的问题。我们如何将这两个操作合并为一个?const arr=映射(项=>拾取(列,项),数据);项目(col,arr)?很抱歉,我不能在这里很好地解释它。顺便说一句,非常感谢你的帮助和时间:)非常感谢斯科特的帮助。非常感谢:)const col=[“a”、“d”、“c”];常量arr=map(项=>选取(列,项),数据);//[{a:1,c:2,d:3}];项目(col,arr)在项目运行之前,我正在执行拾取和映射操作。我怎样才能把这两个操作组合成一个语句?@newbie:我没有按照你的意思去做。但这听起来似乎是一个不同的问题。我们如何将这两个操作合并为一个?const arr=映射(项=>拾取(列,项),数据);项目(col,arr)?很抱歉,我不能在这里很好地解释它。顺便说一句,非常感谢您的帮助和时间:)