2016-09-20 3 views
0

の配列をフィルター:は、私はこのようになり、そのデータを持つオブジェクト

[{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を使用してこのデータをフィルタしますか?これを行うには

答えて

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);

元の完全なデータへの参照を保持する必要がある場合は、新しい変数。

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); 
+0

あなたは 'arr'を再宣告しています。 'arr = arr.map(...)'を代入する方がいいでしょう。 –

+0

@SumnerEvans - 良い点。新しい変数に結果を代入し始め、それを変更して古い変数を上書きしました。更新しました。 – nnnnnn

+0

@nnnnnn:実際には、配列を更新しました。キーも文字列です。どのようにこのjavascriptコードを変更しますか?ありがとうございました!!! – newenthusiast

1

あなたはjsonDataと呼ばれるJavaScriptオブジェクトへのあなたのJSONを解析されていると仮定すると、あなただけの配列を反復処理し、同様に追加することができますそう:

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, 
    }); 
} 
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です。

関連する問題