Javascript/Json根据属性内的键值显示键值列表
我希望能够根据属性中的值提取键值列表 我的代码到目前为止Javascript/Json根据属性内的键值显示键值列表,javascript,html,json,Javascript,Html,Json,我希望能够根据属性中的值提取键值列表 我的代码到目前为止 var xmlhttp=new XMLHttpRequest(); xmlhttp.onreadystatechange=函数(){ if(this.readyState==4&&this.status==200){ var myobjj=JSON.parse(this.responseText); 变量e; var-q; var w=“”; 对于(myobjj.features[0].properties.AREAID中的q){ w+
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=函数(){
if(this.readyState==4&&this.status==200){
var myobjj=JSON.parse(this.responseText);
变量e;
var-q;
var w=“”;
对于(myobjj.features[0].properties.AREAID中的q){
w+=myobjj.features[q].properties.CDNAME+“
”;
}
document.getElementById(“demog”).innerHTML=w;
}
};
open(“GET”https://api.npoint.io/d901ff317ae962d8c376“,对);
xmlhttp.send()代码>
使用JavaScript从外部JSON文件读取数据
使用JavaScript从外部JSON文件提取的数据。
如果我理解你的问题——我不是100%肯定我理解——你可以使用AREAID将所有CDNAME
值放入垃圾箱:
.filter(c => c.properties.AREAID === "area4")
const data={“type”:“FeatureCollection”,“features”:[
{“类型”:“特征”,“属性”:{“CDUID”:“4811”,“颜色”:“ff00f0”,“PRUID”:“48”,“AREAID”:“area4”,“CDNAME”:“第11区”,“CDTYPE”:“CDR”,“PRNAME”:“阿尔伯塔”,“KML_风格”:“area6”},
{“类型”:“特征”,“属性”:{“CDUID”:“4807”,“颜色”:“00fffc”,“PRUID”:“48”,“AREAID”:“area1”,“CDNAME”:“部门编号7”,“CDTYPE”:“CDR”,“PRNAME”:“阿尔伯塔”,“KML_风格”:“area6”},
{“类型”:“特征”,“属性”:{“CDUID”:“4815”,“颜色”:“fffc00”,“PRUID”:“48”,“AREAID”:“area2”,“CDNAME”:“第15区”,“CDTYPE”:“CDR”,“PRNAME”:“阿尔伯塔”,“KML_风格”:“area6”},
{“类型”:“特征”,“属性”:{“CDUID”:“4802”,“颜色”:“ff0000”,“普鲁德”:“48”,“AREAID”:“area3”,“CDNAME”:“部门编号2”,“CDTYPE”:“CDR”,“PRNAME”:“阿尔伯塔”,“KML_风格”:“area6”},
{“类型”:“特征”,“属性”:{“CDUID”:“4808”,“颜色”:“00fffc”,“普鲁德”:“48”,“AREAID”:“area1”,“CDNAME”:“部门编号8”,“CDTYPE”:“CDR”,“PRNAME”:“阿尔伯塔”,“KML_风格”:“area6”},
{“类型”:“特征”,“属性”:{“CDUID”:“4803”,“颜色”:“fffc00”,“PRUID”:“48”,“AREAID”:“area2”,“CDNAME”:“第3分区”,“CDTYPE”:“CDR”,“PRNAME”:“阿尔伯塔”,“KML_风格”:“area6”},
{“类型”:“特征”,“属性”:{“CDUID”:“4801”,“颜色”:“ff0000”,“普鲁德”:“48”,“AREAID”:“area3”,“CDNAME”:“1区”,“CDTYPE”:“CDR”,“PRNAME”:“艾伯塔省”,“KML_风格”:“area6”},
{“类型”:“特征”,“属性”:{“CDUID”:“4804”,“颜色”:“ff0000”,“普鲁德”:“48”,“AREAID”:“area3”,“CDNAME”:“部门编号4”,“CDTYPE”:“CDR”,“PRNAME”:“阿尔伯塔”,“KML_风格”:“area6”},
{“类型”:“特征”,“属性”:{“CDUID”:“4801”,“颜色”:“ff0000”,“普鲁德”:“48”,“AREAID”:“area3”,“CDNAME”:“1区”,“CDTYPE”:“CDR”,“PRNAME”:“艾伯塔省”,“KML_风格”:“area6”},
{“类型”:“特征”,“属性”:{“CDUID”:“4804”,“颜色”:“ff0000”,“普鲁德”:“48”,“AREAID”:“area3”,“CDNAME”:“部门编号4”,“CDTYPE”:“CDR”,“PRNAME”:“阿尔伯塔”,“KML_风格”:“area6”},
{“类型”:“特征”,“属性”:{“CDUID”:“4806”,“颜色”:“fffc00”,“PRUID”:“48”,“AREAID”:“area2”,“CDNAME”:“第6分区”,“CDTYPE”:“CDR”,“PRNAME”:“阿尔伯塔”,“KML_风格”:“area6”},
{“类型”:“特征”,“属性”:{“CDUID”:“4816”,“颜色”:“ff00f0”,“PRUID”:“48”,“AREAID”:“area4”,“CDNAME”:“第16区”,“CDTYPE”:“CDR”,“PRNAME”:“阿尔伯塔”,“KML_风格”:“area6”},
{“类型”:“特征”,“属性”:{“CDUID”:“4812”,“颜色”:“0600ff”,“普鲁德”:“48”,“AREAID”:“area5”,“CDNAME”:“部门编号12”,“CDTYPE”:“CDR”,“PRNAME”:“阿尔伯塔”,“KML_风格”:“area6”},
{“类型”:“特征”,“属性”:{“CDUID”:“4805”,“颜色”:“fffc00”,“PRUID”:“48”,“AREAID”:“area2”,“CDNAME”:“第5区”,“CDTYPE”:“CDR”,“PRNAME”:“阿尔伯塔省”,“KML_风格”:“area6”},
{“类型”:“特征”,“属性”:{“CDUID”:“4817”,“颜色”:“ff00f0”,“PRUID”:“48”,“AREAID”:“area4”,“CDNAME”:“第17区”,“CDTYPE”:“CDR”,“PRNAME”:“阿尔伯塔”,“KML_风格”:“area6”},
{“类型”:“特征”,“属性”:{“CDUID”:“4813”,“颜色”:“ff00f0”,“PRUID”:“48”,“AREAID”:“area4”,“CDNAME”:“部门编号13”,“CDTYPE”:“CDR”,“PRNAME”:“阿尔伯塔”,“KML_风格”:“area6”},
{“类型”:“特征”,“属性”:{“CDUID”:“4810”,“颜色”:“0600ff”,“PRUID”:“48”,“AREAID”:“area5”,“CDNAME”:“第10区”,“CDTYPE”:“CDR”,“PRNAME”:“阿尔伯塔”,“KML_风格”:“area6”},
{“类型”:“特征”,“属性”:{“CDUID”:“4819”,“颜色”:“ff00f0”,“PRUID”:“48”,“AREAID”:“area4”,“CDNAME”:“第19区”,“CDTYPE”:“CDR”,“PRNAME”:“阿尔伯塔”,“KML_风格”:“area6”},
{“类型”:“特征”,“属性”:{“CDUID”:“4818”,“颜色”:“ff00f0”,“PRUID”:“48”,“AREAID”:“area4”,“CDNAME”:“部门编号18”,“CDTYPE”:“CDR”,“PRNAME”:“阿尔伯塔”,“KML_风格”:“area6”},
{“类型”:“特征”,“属性”:{“CDUID”:“4814”,“颜色”:“ff00f0”,“PRUID”:“48”,“AREAID”:“area4”,“CDNAME”:“第14区”,“CDTYPE”:“CDR”,“PRNAME”:“阿尔伯塔”,“KML_风格”:“area6”},
{“类型”:“特征”,“属性”:{“CDUID”:“4809”,“颜色”:“00fffc”,“PRUID”:“48”,“AREAID”:“area1”,“CDNAME”:“部门编号9”,“CDTYPE”:“CDR”,“PRNAME”:“阿尔伯塔”,“KML_风格”:“area6”}}}
//迭代data.features中的项
const cdNameByArea=data.features.reduce((acc,item)=>{
//从当前项的属性中获取我们感兴趣的值
const{AREAID,CDNAME}=item.properties;
//将名称添加到相应区域的bin中,
//如果垃圾箱不存在,则创建垃圾箱
acc[AREAID]=[…acc[AREAID]| |[],CDNAME];
return acc;//为下一次迭代返回更新的累加器对象
}, {})
log(JSON.stringify(cdNameByArea,null,3))代码>你是说像这样的东西
如果您不想在例如区域3中有重复,我们可以使用一个集合
const data={“type”:“FeatureCollection”,“features”:[{“type”:“Feature”,“properties”:{“CDUID”:“4811”,“COLOR”:“ff00f0”,“PRUID”:“48”,“areid”:“area4”,“CDNAME”:“第11区”,“CDTYPE”:“CDR”,“PRNAME”:“Alberta”,“KML_风格”:“area6”},{“type”:“Feature”,“properties”:“CDUID”:“4807”,“COLOR”:“fffc”,“PRUID”:“48”、“AREAID”:“area1”、“CDNAME”:“第7区”、“CDTYPE”:“CDR”、“PRNAME”:“Alberta”、“KML_风格”:
.map(res => res.properties.CDNAME+"<br>")
var result = myObjjj.features.filter(c => c.properties.AREAID === "area4").map(res => res.properties.CDNAME+"<br>").join('');
{
area4: [
'Division No. 11',
'Division No. 16',
'Division No. 17',
'Division No. 13',
'Division No. 19',
'Division No. 18',
'Division No. 14'
],
area1: [ 'Division No. 7', 'Division No. 8', 'Division No. 9' ],
area2: [
'Division No. 15',
'Division No. 3',
'Division No. 6',
'Division No. 5'
],
area3: [
'Division No. 2',
'Division No. 1',
'Division No. 4',
'Division No. 1',
'Division No. 4'
],
area5: [ 'Division No. 12', 'Division No. 10' ]
}
let { features } = response;
// Find unique area ids
const areaIds = features.reduce((ids, { properties }) => {
let { AREAID } = properties;
if (!ids.includes(AREAID)) {
ids.push(AREAID);
}
return ids;
}, []);
// Create an array of divisions for each area id
const divisions = areaIds.reduce((res, id) => {
res[id] = features
.filter(({ properties }) => properties.AREAID == id)
.map(({ properties }) => properties.CDNAME);
return res;
}, {});
let devisions = [];
for (let i = 0; i < YourJSON.features.length;i++) {
if (YourJSON.features[i].properties.AREAID == "area4") {
devisions.push(YourJSON.features[i].properties.CDNAME);
}
}
devisions;
// ["Division No. 11", "Division No. 16", "Division No. 17", "Division No. 13", "Division No. 19", "Division No. 18", "Division No. 14"]