【问题标题】:Building an array from ajax JSON response从 ajax JSON 响应构建一个数组
【发布时间】:2018-04-09 13:54:14
【问题描述】:

我需要使用 jQuery 从返回的 JSON 对象构建一个数组。如果这些数据键有一个通用的命名约定或子级别,这会容易得多,我知道有更好的方法可以做到这一点,但我的 jQuery 有点生疏。谢谢!

JSON

{
"Service": true,
"ZipCode": "02865",
"City": "Lincoln",
"State": "RI",
"plumbing": true,
"electric": true,
"septic": true,
"excavation": true,
"draincleaning": true,
"heating": true,
"cooling": true,
"waterquality": true,
"commercial": true
}

jQuery

if (response.hasOwnProperty("plumbing")){
  services.push("Plumbing");
}
if (response.hasOwnProperty("electric")){
  services.push("Electric");
}
if (response.hasOwnProperty("septic")){
  services.push("Septic");
}
if (response.hasOwnProperty("excavation")){
  services.push("Excavation");
}
if (response.hasOwnProperty("draincleaning")){
  services.push("Drain Cleaning");
}
if (response.hasOwnProperty("heating")){
  services.push("Heating");
}
if (response.hasOwnProperty("cooling")){
  services.push("Cooling");
}
if (response.hasOwnProperty("waterquality")){
  services.push("Water Quality");
}
if (response.hasOwnProperty("commercial")){
  services.push("Commercial");
}

给我

["Plumbing", "Electric", "Septic", "Excavation", "Drain Cleaning", "Heating", "Cooling", "Water Quality", "Commercial"

【问题讨论】:

    标签: jquery arrays json ajax api


    【解决方案1】:

    您可以定义名称并使用reduce 循环并检查名称变量上是否存在键。

    //List the names on an object. eg use key waterquality for "Water Quality"
    let name = {"plumbing": "Plumbing","electric": "Electric","septic": "Septic","excavation": "Excavation","draincleaning": "Drain Cleaning","heating": "Heating","cooling": "Cooling","waterquality": "Water Quality","commercial": "Commercial"}
    
    //Your object
    let obj = {"Service": true,"ZipCode": "02865","City": "Lincoln","State": "RI","plumbing": true,"electric": true,"septic": true,"excavation": true,"draincleaning": true,"heating": true,"cooling": true,"waterquality": true,"commercial": true}
    
    let services = Object.keys(obj).reduce((c, v) => {
      if (name[v]) c.push(name[v]);
      return c;
    }, []);
    
    console.log(services);

    【讨论】:

      【解决方案2】:
      for(var i in jsonData){
          services.push(i)
      }
      

      或者你也可以这样做:

      services = Object.keys(jsonData)
      

      【讨论】:

      • 请注意,并非所有键都显示,例如。 Service,它们的最终值不同,例如。 draincleaning 变为 Drain Cleaning
      • 是的。然后对于他想要重命名的那些,他可以使用上面列出的 for 循环方法中的 if 语句检查它们。不确定除此之外的更好方法。
      猜你喜欢
      • 2018-11-08
      • 2020-01-12
      • 2013-07-17
      • 1970-01-01
      • 1970-01-01
      • 2020-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多