2016-07-05 9 views
2

Ich habe ein JSON-Objekt mit einer großen Datenmenge. Ich möchte ein JSON-Objekt an die Webmethode übergeben, die nur die Liste eines Wertes enthalten muss. Mit $ .grep können wir die Daten wie LINQ filtern. Aber wir können den Artikel nicht auswählen. (* nach meinem Wissen). Gibt es eine Alternative? Ich möchte keine JS Plugins abgesehen von Jquery (wie Underscore js) verwenden!Auswahl des Elements aus dem JSON-Objekt und Rückgabe als JSON-Objekt wie C# LINQ

Lassen Sie mich mit Beispieldaten erklären. Wenn mein Json-Objekt so ist.

data ={"employees":[ 
    {"firstName":"John", "lastName":"Doe" , "Age":"12"}, 
    {"firstName":"Anna", "lastName":"Smith", "Age":"13"}, 
    {"firstName":"Peter", "lastName":"Jones", "Age":"42"} 
]}; 

ich das Ergebnis wie,

data ={"employees":[ 
    { "Age":"12"}, 
    { "Age":"13"}, 
    { "Age":"42"} 
]}; 

von ohne Verwendung für oder foreach-Schleife festlegen möchten! Weiß jemand das?

+0

Ihr Datenformat ist ungültig - das übergeordnete Objekt muss einen Schlüssel zum Speichern des Arrays haben. Warum möchten Sie auch keine Schleife verwenden? Das ist alles, was abstrahierte Methoden ohnehin tun. –

+1

meinst du: data.employees.map (funktion (d) {return d.Age})? –

+0

@Rory McCrossan: Das ist nur eine Beispieldaten, die ich angegeben habe! Ich möchte wissen, ob es einen Weg wie LINQ gibt! denn wenn die Schleife ich gegeben habe, muss ich sie zu oft platzieren! –

Antwort

2

Sie Karte aussehen nutzen verwenden sollten:

var data ={"employees":[ 
    {"firstName":"John", "lastName":"Doe" , "Age":"12"}, 
    {"firstName":"Anna", "lastName":"Smith", "Age":"13"}, 
    {"firstName":"Peter", "lastName":"Jones", "Age":"42"} 
]}; 

function select(data, key, item){ 
    var selectedData = {} 
    selectedData[key] = data[key].map(function(d){return d[item]}) 
    return selectedData; 
} 

select(data, "employees","Age") 
1

Wenn Sie Ihre Daten in ein Array anstelle von Objekt ändern. Sie können Array-Funktion, wie diese

const data =[ 
    {"firstName":"John", "lastName":"Doe" , "Age":"12"}, 
    {"firstName":"Anna", "lastName":"Smith", "Age":"13"}, 
    {"firstName":"Peter", "lastName":"Jones", "Age":"42"} 
]; 

const data2 = data.map(item => { 
    return {Age: item.Age} 
}) 

Daten2 wie diese

data2 =[ 
    { "Age":"12"}, 
    { "Age":"13"}, 
    { "Age":"42"} 
] 
+0

Das Objekt von OP ist ein Array. (Zumindest ist der Teil, den er ändern möchte, ein Array.) – nnnnnn

1

könnten Sie linq.js

var data = { employees: [{ firstName: "John", lastName: "Doe", Age: "12" }, { firstName: "Anna", lastName: "Smith", Age: "13" }, { firstName: "Peter", lastName: "Jones", Age: "42" }] }, 
 
    result = Enumerable.From(data.employees).Select('{Age:$.Age}').ToArray(); 
 

 
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/linq.js/2.2.0.2/linq.js"></script>
verwenden

Verwandte Themen