1

因此,假设我有一个如下所示的数组:

weather = ["sun", "clouds", "rain", "hail", "snow"]

我想找到并显示所有包含字母“s”的字符串。这是我认为我应该做的...

for(var i = 0; i < weather.length; i++)
{
    if(weather[i].indexOf('s') != -1)
    {
        alert(weather);
    }
}

但这只是显示所有天气字符串的次数与其中包含字母“s”的字符串一样多。(它只会提示:“太阳、云、雨、冰雹、雪”3 次)

我如何让它只提醒包含字母“s”的天气的具体名称?

4

4 回答 4

4

你需要做alert(weather[i])而不是alert(weather)

检查这个小提琴

于 2013-05-03T20:29:35.930 回答
4

作为没有变量或循环的简单现代解决方案:

alert(
  ["sun", "clouds", "rain", "hail", "snow"].filter(/./.test, /i/)
)
于 2013-05-03T20:47:57.540 回答
1

哦。我想我只是错过了一个小细节。

for(var i = 0; i < weather.length; i++)
{
    if(weather[i].indexOf('s') != -1)
    {
        alert(weather[i]);
    }
}
于 2013-05-03T20:29:02.290 回答
0

很简单

 weather = ["sun", "clouds", "rain", "hail", "snow"];

      weather.forEach(function(arrayItem,arrayIndex,array){
              if(array[arrayIndex].match('s')){
               alert(array[arrayIndex]);
              }
      })

解释:

forEach() 方法为数组中的每个元素调用一个函数。
arraytItem like='sun' , 'clouds' 等
arrayIndex=arrayItem 的位置;
数组=天气;

于 2018-05-09T11:09:11.900 回答