如何用jQuery从返回的JSON对象构建数组?求更优实现方案
用jQuery从给定JSON构建数组的实现方案
嘿,别慌,jQuery久不用生疏太正常了!针对你给出的JSON结构,我整理了几种实用的数组构建方式,都是用jQuery就能轻松搞定的~
先把你的JSON示例存为变量方便后续操作:
const responseData = { "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 };
场景1:提取所有启用的服务项名称数组
从你的JSON来看,有一堆值为true的服务类型字段(除了顶部的Service),如果目标是把这些服务名提取成数组,用jQuery的$.each遍历就很方便:
const availableServices = []; // 遍历JSON的每个键值对 $.each(responseData, function(key, value) { // 筛选出值为true且不是基础字段"Service"的项 if (value === true && key !== "Service") { availableServices.push(key); } }); console.log(availableServices); // 输出结果:["plumbing", "electric", "septic", "excavation", "draincleaning", "heating", "cooling", "waterquality", "commercial"]
场景2:构建地址信息的结构化数组
如果需要把地址相关的基础信息整理成数组(比如单个对象元素的数组,方便后续批量处理),可以直接手动组装:
const locationInfoArray = [ { zipCode: responseData.ZipCode, city: responseData.City, state: responseData.State, isServiceAvailable: responseData.Service } ]; console.log(locationInfoArray); // 输出:[{zipCode: "02865", city: "Lincoln", state: "RI", isServiceAvailable: true}]
场景3:整合基础信息与服务列表的复合数组
要是想把两种信息整合到一个数组里,形成更完整的数据结构,可以结合上面两个场景的结果:
const combinedDataArray = [ { locationDetails: { zip: responseData.ZipCode, city: responseData.City, state: responseData.State }, serviceEnabled: responseData.Service, availableServices: availableServices // 复用场景1生成的数组 } ]; console.log(combinedDataArray);
额外小建议
如果以后你的API能把服务项统一放到一个子对象层级里(比如"services": {plumbing: true, electric: true, ...}),那遍历起来会更简洁,直接遍历responseData.services就行~ 不过现在的写法完全能适配你当前的JSON结构啦!
内容的提问来源于stack exchange,提问作者Brendon
相关产品推荐
相关产品推荐

