在javascript中将foreach转换为map函数

在javascript中将foreach转换为map函数,javascript,ecmascript-6,Javascript,Ecmascript 6,这是我在foreach循环中的函数,用于创建对象,该对象的属性和值为word及其计数,但我想根据es6在map中对其进行转换 function harmlessRamsonNote(noteText,magazineText) { var noteArr = noteText.split(' '); var magazineArr = magazineText.split(' '); var magazineObj = {}; magazineArr.forEach(word

这是我在foreach循环中的函数,用于创建对象,该对象的属性和值为word及其计数,但我想根据es6在map中对其进行转换

function harmlessRamsonNote(noteText,magazineText)
{
  var noteArr = noteText.split(' ');
  var magazineArr = magazineText.split(' ');
  var magazineObj = {};

  magazineArr.forEach(word => {
    if(!magazineObj[word])
    {
      magazineObj[word] = 0;
    }
    magazineObj[word]++;
  });

  console.log(magazineObj);
};
地图将为每个项目返回一个新项目。相反,您可以使用reduce

地图将为每个项目返回一个新项目。相反,您可以使用reduce


它给出的错误为magazineObj未在此行中定义magazineObj[word]=magazineObj[word]| |-1+1;它仍然给出acc[word]=acc[word]| |-1+1;^的错误TypeError:无法读取未定义的属性“is”,我认为这是因为acc的第一个循环值未定义,尽管我不确定这一点,但我真的非常感谢您的帮助和响应,尽管我没有使用is,可能是您的错误?当我使用此harmlessRamsonNote调用函数时,“这是文本中的ramson”;它给出了该错误,即在传递字符串的第二个字中给出了错误。它给出了错误,因为magazineObj[word]=magazineObj[word]| |-1+1;它仍然给出acc[word]=acc[word]| |-1+1;^的错误TypeError:无法读取未定义的属性“is”,我认为这是因为acc的第一个循环值未定义,尽管我不确定这一点,但我真的非常感谢您的帮助和响应,尽管我没有使用is,可能是您的错误?当我使用此harmlessRamsonNote调用函数时,“这是文本中的ramson”;它给出那个错误,即在传递的字符串的第二个字中给出错误
magazineArr.map((word, index, array) => {
   !magazineObj[word] ? magazineObj[word] = 0 : magazineObj[word]++;
})
const magazineObj = magazineArr.reduce((acc,word) => {
   acc[word] = (acc[word] || -1) + 1;
}, {});