Javascript,检查多个数组的数字

Javascript, check multiple arrays for number

本文关键字:数组 数字 检查 Javascript      更新时间:2023-09-26

我在这里寻找最好的解决方案,我有一个想法,但认为它可以做得更漂亮。

我正在制作一个简单的天气应用程序。我正在使用雅虎天气API,因为他们有天气状况的代码。

根据条件,我给出一个代码。现在,有 50 个代码,我将它们分为 5 类。就我而言,例如,我的分类 Snow 包含 15 个雅虎的条件代码。

好吧,如果您有更好的主意(我敢打赌有),请随时提出建议。

我的想法是从一组数组中返回匹配值,而不是如何做到这一点。

我的代码现在如下所示:

function getCondition(code) {
   var snow = [1, 2, 3],
       sun = [4, 5, 6];
} 

我需要的是包含代码匹配编号的变量名?

我做了一个JS小提琴http://jsfiddle.net/BH8r6/

最快的查找(将雅虎代码转换为您的标签)是将代码用作数组键(如果它们是顺序的)。

var weather = [];
weather[0] = "no_weather"; 
weather[1] = "snow"; 
weather[2] = "snow"; 
weather[3] = "snow"; 
weather[4] = "sun";
weather[5] = "sun";
weather[6] = "sun"; 
function getCondition(code) {
   return weather[code];
}

当你的键是你的变量名,而你的值是变量名的对应代码时,你为什么不尝试一个关联数组,这样你的代码将是这样的:

var myCodeArray=[];
myCodeArray["snow"]=[1, 2, 3];
myCodeArray["sun"] = [4, 5, 6];

现在你的方法 getCondition 将是

function getCondition(code) 
{
    for(var definedCodeName in myCodeArray)
    {
      if(myCodeArray.hasOwnProperty(definedCodeName))
      {          
        var array=myCodeArray[definedCodeName ];
        for(var i=0;i<array.length;i++)
        {
            if(array[i]==code){
                return definedCodeName ;}
        }
      }
    }
    return "Not found";
}

演示

为什么要使一切复杂化?!只需使用'switch'

function getCondition(code) {
switch( code ){
    case 1:
    case 2:
    case 4:
    case 6:
        return "snow";
    case 3:
    case 8:
    case 9:
        return "sun";
    case 5:
    case 7:
    case 10:
        return "cloudy";        
}
return "none";
}