5

私はこのJSONファイルを持っています:http://danish-regional-data.googlecode.com/svn/trunk/danish_regional_data.json

すべての郵便番号のすべての属性within_5_km、、、、within_10_kmを削除するにはどうすればよいですか?within_25_kmwithin_50_kmwithin_100_km

私はこの質問を読みました:JSON属性を削除します

$(document).ready(function() {

    $.getJSON("post.json", function(data) {

    var pc = data.postalcodes;
    for (var id in pc) {
       if(pc.hasOwnProperty(id)) {
          for(var attr in pc[id]) {
             if(pc[id].hasOwnProperty(attr) && attr.indexOf('within_') === 0) {
               delete pc[id][attr];
             }
          }
       }
    }

    $("#json").html(pc);

    });

});
4

5 に答える 5

3

ES2016では、破壊を使用して、サブセットオブジェクトに必要なフィールドを選択できます。

//ES6 subset of an object by specific fields
var object_private = {name: "alex", age: 25, password: 123};
var {name,age} = object_private, object_public = {name,age}


//method 2 using literals
let object_public = (({name,age})=>({name,age}))(object_private);


//use map if array of objects
    users_array.map(u=>u.id)
于 2016-04-29T20:29:14.053 に答える
2

指定したjsonURLに移動し、Firebugコンソールを開きます。次に、次のコードをドロップして実行します。

var p = document.getElementsByTagName('pre');
for(i=0; i < p.length; i++) {

  var data = JSON.parse(p[i].innerHTML);
  var pc = data.postalcodes;

  // this is the code i gave you... the previous is jsut to pull it out of the page
  // in Firebug - this works for me

  for (var id in pc) {
     if(pc.hasOwnProperty(id)) {
        for(var attr in pc[id]) {
          if(pc[id].hasOwnProperty(attr) && attr.indexOf('within_') === 0) {
             console.log('Deleting postalcodes.'+id+'.'+attr);
             delete pc[id][attr];
           }
        }
     }
  }
}

// assume data is the complete json

var pc = data.postalcodes;
for (var id in pc) {
   if(pc.hasOwnProperty(id)) {
      for(var attr in pc[id]) {
         if(pc[id].hasOwnProperty(attr) && attr.indexOf('within_') === 0) {
           delete pc[id][attr];
         }
      }
   }
}
于 2012-11-05T14:51:31.597 に答える
1

JSONが切り捨てられました:

var data = {"postalcodes":
{"800":{"id":"800","name":"H\u00f8je Taastrup","region_ids":["1084"],"region_names":["Hovedstaden"],"commune_ids":["169"],"commune_names":["H\u00f8je-Taastrup"],"lat":"55.66713","lng":"12.27888", "within_5_km":["800","2620","2630","2633"],"within_10_km":["800","2600","2605","2620"]},
"900":{"id":"900","name":"K\u00f8benhavn C","region_ids":["1084"],"region_names":["Hovedstaden"],"commune_ids":["101"],"commune_names":["K\u00f8benhavns"],"lat":"55.68258093401054","lng":"12.603657245635986","within_5_km":["900","999"]},
"1417":{"commune_id":"390","region_id":"1085"}}};
var pc = data.postalcodes;
for (var id in pc) {
    var entry = pc[id];
    for(var attr in entry) {
        if(attr.indexOf('within_') === 0) {
            delete entry[attr];
        }
    }
}
console.dir(data); // your data object has been augmented at this point

正規表現も使用できます

var data = {"postalcodes":
{"800":{"id":"800","name":"H\u00f8je Taastrup","region_ids":["1084"],"region_names":["Hovedstaden"],"commune_ids":["169"],"commune_names":["H\u00f8je-Taastrup"],"lat":"55.66713","lng":"12.27888", "within_5_km":["800","2620","2630","2633"],"within_10_km":["800","2600","2605","2620"]},
"900":{"id":"900","name":"K\u00f8benhavn C","region_ids":["1084"],"region_names":["Hovedstaden"],"commune_ids":["101"],"commune_names":["K\u00f8benhavns"],"lat":"55.68258093401054","lng":"12.603657245635986","within_5_km":["900","999"]},
"1417":{"commune_id":"390","region_id":"1085"}}};
var regexp = new RegExp("^within_", "i");   // case insensitive regex matching strings starting with within_
var pc = data.postalcodes;
for (var id in pc) {
    var entry = pc[id];
    for(var attr in entry) {
        if(regexp.test(attr)) {
            delete entry[attr];
        }
    }
}
console.dir(data);
于 2012-11-05T15:32:20.520 に答える
1

私はこれを正確に行うnpmモジュールunsetを作成しました。削除するリーフ属性まで、 json-pathモ​​ジュールと同様のjsonパスを指定します。

let unset = require('unset');
let object = {a: { b: [ {x: 1}, {x: [{ e: 2} ]}]}};
let newObject = unset(object, ['/a/b[*]/x']);

2番目の引数では複数のパスがサポートされています

于 2017-01-05T10:58:23.607 に答える
0

よくあなたはこれを行うことができます:

var postalcodes = YOUR JSON;

for(var code in postalcodes)
{
 delete postalcodes[code].within_5_km;
 .
 .
 .
}

コードにプロパティが含まれているかどうかを確認することをお勧めします...

于 2012-11-05T14:44:01.580 に答える