【问题标题】:JavaScript array iteratorsJavaScript 数组迭代器
【发布时间】:2018-11-27 12:17:05
【问题描述】:

我正在做这个练习,但我不明白为什么它不起作用。有人愿意帮忙吗?

let story = 'Last weekend, I took literally the most beautiful bike ride of my life. The route is called "The 9W to Nyack" and it actually stretches all the way from Riverside Park in Manhattan to South Nyack, New Jersey. It\'s really an adventure from beginning to end! It is a 48 mile loop and it basically took me an entire day. I stopped at Riverbank State Park to take some extremely artsy photos. It was a short stop, though, because I had a really long way left to go. After a quick photo op at the very popular Little Red Lighthouse, I began my trek across the George Washington Bridge into New Jersey.  The GW is actually very long - 4,760 feet! I was already very tired by the time I got to the other side.  An hour later, I reached Greenbrook Nature Sanctuary, an extremely beautiful park along the coast of the Hudson.  Something that was very surprising to me was that near the end of the route you actually cross back into New York! At this point, you are very close to the end.';

let overusedWords = ['really', 'very', 'basically'];

let unnecessaryWords = ['extremely', 'literally', 'actually' ];

const storyWords = story.split(' ');

console.log(storyWords.lenght);


const betterWords = storyWords.filter(word=>{
  if (word === unnecessaryWords){
    return false;
  }
  else {
    return true;
  }
});

console.log(betterWords);

第一个 console.log 应该返回长度,但它返回未定义。 在第二个 console.log 中没有过滤任何内容。 我究竟做错了什么? 谢谢。

【问题讨论】:

  • 它的.length
  • 请注意.split(' ') 会让你的方法漏掉后面跟,.: 等类似的词。例如:Last weekend, literally, I took ...

标签: javascript arrays iterator


【解决方案1】:

没有第一个console.log 的原因是length 属性上有错字。您使用的lenght 无效。

没有第二个console.log的原因是因为有一个unnecessaryWords数组,所以你需要使用indexOf()(或includes())来检查该数组中是否存在单词:

let story = 'Last weekend, I took literally the most beautiful bike ride of my life. The route is called "The 9W to Nyack" and it actually stretches all the way from Riverside Park in Manhattan to South Nyack, New Jersey. It\'s really an adventure from beginning to end! It is a 48 mile loop and it basically took me an entire day. I stopped at Riverbank State Park to take some extremely artsy photos. It was a short stop, though, because I had a really long way left to go. After a quick photo op at the very popular Little Red Lighthouse, I began my trek across the George Washington Bridge into New Jersey.  The GW is actually very long - 4,760 feet! I was already very tired by the time I got to the other side.  An hour later, I reached Greenbrook Nature Sanctuary, an extremely beautiful park along the coast of the Hudson.  Something that was very surprising to me was that near the end of the route you actually cross back into New York! At this point, you are very close to the end.';

let overusedWords = ['really', 'very', 'basically'];

let unnecessaryWords = ['extremely', 'literally', 'actually'];

const storyWords = story.split(' ');

console.log(storyWords.length);


const betterWords = storyWords.filter(word => {
  return unnecessaryWords.indexOf(word) === -1;
});

console.log(betterWords);

【讨论】:

    【解决方案2】:

    您可以执行以下操作:

    let story = 'Last weekend, I took literally the most beautiful bike ride of my life. The route is called "The 9W to Nyack" and it actually stretches all the way from Riverside Park in Manhattan to South Nyack, New Jersey. It\'s really an adventure from beginning to end! It is a 48 mile loop and it basically took me an entire day. I stopped at Riverbank State Park to take some extremely artsy photos. It was a short stop, though, because I had a really long way left to go. After a quick photo op at the very popular Little Red Lighthouse, I began my trek across the George Washington Bridge into New Jersey.  The GW is actually very long - 4,760 feet! I was already very tired by the time I got to the other side.  An hour later, I reached Greenbrook Nature Sanctuary, an extremely beautiful park along the coast of the Hudson.  Something that was very surprising to me was that near the end of the route you actually cross back into New York! At this point, you are very close to the end.';
    
    let overusedWords = ['really', 'very', 'basically'];
    
    let unnecessaryWords = ['extremely', 'literally', 'actually' ];
    
    const storyWords = story.split(' ');
    
    console.log(storyWords.length); // length spelling mistake
    
    
    const betterWords = storyWords.filter(word=>{
      if (unnecessaryWords.includes(word)){ // check words in the array like that
        return false;
      }
      else {
        return true;
      }
    });
    
    console.log(betterWords);

    【讨论】:

    • return !unnecessaryWords.includes(word)
    • 我理解你的观点......但我已经展示了代码中的错误......
    • @mplungjan .filter(word=>!unnecessaryWords.includes(word))
    • @connexo 更好:)
    【解决方案3】:

    请在下面试试这个:

    是storyWords.length 不是长度;

    let story = 'Last weekend, I took literally the most beautiful bike ride of my life. The route is called "The 9W to Nyack" and it actually stretches all the way from Riverside Park in Manhattan to South Nyack, New Jersey. It\'s really an adventure from beginning to end! It is a 48 mile loop and it basically took me an entire day. I stopped at Riverbank State Park to take some extremely artsy photos. It was a short stop, though, because I had a really long way left to go. After a quick photo op at the very popular Little Red Lighthouse, I began my trek across the George Washington Bridge into New Jersey.  The GW is actually very long - 4,760 feet! I was already very tired by the time I got to the other side.  An hour later, I reached Greenbrook Nature Sanctuary, an extremely beautiful park along the coast of the Hudson.  Something that was very surprising to me was that near the end of the route you actually cross back into New York! At this point, you are very close to the end.';
    
    
    var storyWords = story.split(' ');
    
    console.log(storyWords.length) // not lenght;
    
    
    function betterWords(storyWords) {
      foreach(var word in storyWords) {
        if (word === unnecessaryWords) {
          return false;
        } else {
          return true;
        }
      }
    }
    
    console.log(betterWords(story));

    【讨论】:

    • 这是无效的 JS foreach(var word in storyWords) {
    • 您丢失了不必要的单词,并且您无法将字符串与数组进行比较。请在此页面上查看其他答案
    猜你喜欢
    • 1970-01-01
    • 2015-03-14
    • 2021-06-05
    • 1970-01-01
    • 2016-06-13
    • 2017-03-29
    • 2018-04-06
    • 2019-02-27
    • 2017-12-17
    相关资源
    最近更新 更多