2016-02-29 60 views
1

目前我正在构建能够实时显示天气的web应用程序,但是我坚持我的一个想法。所以我使用的是免费预测API,并且我将ICON的对象值(如果下雨,下雪等时在不同时间显示的图标)。我已经根据该预测API的文档创建了有关此对象值的所有可能选项的数组:'icon',并且已准备好了我的Img文件夹中的所有图像。所以我的想法是通过这个数组遍历所有可能的天气条件选项,然后如果与我的ICON变量相匹配,并根据我的API改变所有的时间,我希望能够为CURRENT分配正确的图像天气状况:雨 - Assign Rain.png或雪天 - Assign Snow.png等等。循环通过数组匹配变量并分配条件执行

这是我的代码,直到现在,但我有匹配我的数组与ICON变量输出的问题。而且,我还对所有我想要分配的图像进行排列,如果匹配。

var weatherConditions = [ 
      'Clear', 
      'Possible Light Precipitation', 
      'Light Precipitation', 
      'Precipitation', 
      'Drizzle', 
      'Possible Drizzle', 
      'Possible Light Rain', 
      'Light Rain', 
      'Rain', 
      'Heavy Rain', 
      'Possible Light Sleet', 
      'Light Sleet', 
      'Sleet', 
      'Heavy Sleet', 
      'Possible Flurries', 
      'Flurries', 
      'Possible Light Snow', 
      'Light Snow', 
      'Snow', 
      'Heavy Snow', 
      'Windy', 
      'Dangerously Windy', 
      'Foggy', 
      'Mostly Cloudy', 
      'Overcast', 
      'Dry and Breezy', 
      'Drizzle and Dangerously Windy' 
     ]; 
    var arrayLength = weatherConditions.length; 
    for (var i = 0; i < arrayLength; i+=1){ 
     if (weatherConditions[i].indexOf(dayOneIconTokyo)){ 
      console.log('working'); 
     } else{ 
      console.log('not in the array'); 
     } 
    } 
+1

是什么'dayOneIconTokyo'的内容? –

+0

你有没有考虑过创建一个映射对象? “{”name“:”key1“,”src“:”1.png“}' – Rajesh

+0

dayOneIconTokyo是我从API中获取的对象值,它表示当前的天气状况(下雨,下雪,多云等) )针对特定城市 – divisionkiller

回答

0

无需循环:

if (~weatherConditions.indexOf(dayOneIconTokyo)) { // returns true if dayOneIconTokyo 
                // is in weatherConditions 
    console.log('working'); 
} else{ 
    console.log('not in the array'); 
} 
+0

Nina,我可能误解了,但是直接使用'array.indexOf(value)'会更好吗? – Rajesh

+0

@Rajesh,你是对的。 –

+0

只是一个小的查询,如果OP想做一个部分搜索,那么会更喜欢/更好:'array.some'还是'array.filter'? – Rajesh

0

假设dayOneIconTokyo是一个数组

for (var i = 0; i < dayOneIconTokyo.length; i++){ 
    if (weatherConditions.indexOf(dayOneIconTokyo[i])){ 
     console.log('working'); 
    } else{ 
     console.log('not in the array'); 
    } 
}