我的数据如下:
[{address: '1300 BRYANT ST',
block: '3903',
cnn: '517000',
latitude: '37.7690871267671',
longitude: '-122.411527667132',
received: '2016-05-06',
x: '6009188.668',
y: '2108146.472' }, {B...}, {C...}]
我想过滤数据,如下所示:
[{address: '1300 BRYANT ST',
latitude: '37.7690871267671',
longitude: '-122.411527667132'},
...]
如何使用JavaScript过滤此数据?
答案 0 :(得分:4)
执行此操作的一种简单方法是使用array .map()
method:
var arr = [{address: '1300 BRYANT ST', block: '3903', cnn: '517000', latitude: '37.7690871267671', longitude: '-122.411527667132', received: '2016-05-06', x: '6009188.668', y: '2108146.472' }, {address: '12 ANOTHER ST', block: '3903', cnn: '517000', latitude: '12.7690871299999', longitude: '44.412300067132', received: '2016-05-06', x: '6009188.668', y: '2108146.472' }];
arr = arr.map(function(v) {
return {
address: v.address,
latitude: v.latitude,
longitude: v.longitude
};
});
console.log(arr);

在显示的代码中,我已将结果分配回同一个变量,但如果您需要保留对原始完整数据的引用,则可以将其分配给新变量。
顺便说一句,关于你问题的原始措辞,你没有" JSON对象",因为there is no such thing:你有一个对象(在你的特定情况下)一个对象数组)或JSON(作为需要解析的字符串)。您在问题中显示的内容不是有效的JSON,因为JSON需要双引号而不是单引号,并且必须引用属性名称,但它是有效的JS对象文字语法。
如果您的数据实际是JSON,字符串,那么您首先要解析它,然后操纵生成的数组。 (如果你之后真的需要它作为JSON,那你就会重新对结果进行字符串化。)
var json = /* your string here */
var arr = JSON.parse(json);
// map here as above
var updateJson = JSON.stringify(arr);
答案 1 :(得分:1)
假设您已将JSON解析为名为jsonData
的JavaScript对象,您只需迭代数组并添加如下:
var jsonData = ...;
var filteredData = [];
for (var i = 0; i < jsonData.length; i++) {
filteredData.push({
address: jsonData[i].address,
latitude: jsonData[i].latitude,
longitude: jsonData[i].longitude,
});
}
答案 2 :(得分:1)
使用纯JavaScript:
var arr=
[{address: '1300 BRYANT ST',
block: '3903',
cnn: '517000',
latitude: '37.7690871267671',
longitude: '-122.411527667132',
received: '2016-05-06',
x: '6009188.668',
y: '2108146.472' }];
var k=arr.map(function(v) {
return {
address: v.address,
latitude: v.latitude,
longitude: v.longitude
}
});
这里是CodePen。