可以通过密钥获取JSON中的某些值,其他我无法获得

时间:2016-01-13 22:17:48

标签: javascript jquery json

我有一些JSON:

SELECT CustomerID, SUM(PurchasePrice) AS PurchaseTotal
FROM sales
GROUP BY CustomerID;

我可以成功搜索这个数组,并使用此函数获取“city”值:

[{
  "cityid":101,
  "city":"Alta"
},
{
  "cityid":102,
  "city":"Bluffdale"
},
{
  "cityid":105,
  "city":"Draper"
},
{
  "cityid":107,
  "city":"Holladay"
}]

我的问题:

当我尝试使用其他功能来获取城市时,而不是获取cityid,它不起作用。

我用来尝试获取城市ID的功能如下:

function getLocality(cid){
    var storedlist = localStorage.getItem("citylist");
    var clist = JSON.parse(storedlist);
    for(var i = 0; i < clist.length; i++)
    {
        if(clist[i].cityid == cid) {
            return clist[i].city;
        } else {
        }
    }
}

我正在调用函数:

 function getCityid(cid){
    var storedlist = localStorage.getItem("citylist");
    var clist = JSON.parse(storedlist);
    for(var i = 0; i < clist.length; i++)
    {
        if(clist[i].city == cid) {
            return clist[i].cityid;
        } else {
        }
    }
}

2 个答案:

答案 0 :(得分:4)

我刚刚打开控制台并尝试了两个功能,它们似乎都有效。由于您没有提供任何问题的输入/输出,我建议如下:

  1. 验证您是否将正确的参数传递到每个函数中。 h1{ font-size:25px; line-height:1em; } 应该引用getLocality()cityid应该引用getCityid()
  2. 避免在javascript中使用city,因为此运算符执行类型强制,其中不同类型的事物被“强制”为相同类型以执行比较。您应该使用不会执行类型强制的==运算符。如果被比较的两件事是不同的类型,它将简单地评估为假。

答案 1 :(得分:0)

试试这个。

function getCityid(city) {
  var storedlist = localStorage.getItem("citylist");
  var clist = JSON.parse(storedlist);
  for(var i = 0; i < clist.length; i++){
      if(clist[i].city === city) {
          return clist[i].cityid;
      }
   }
}