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"]