2017-06-20 1 views
0

die data.json aussehenhinzufügen Schlüssel und Wert in JSON-Datei mit Hilfe von Javascript

[ 
    { 
     "uid": 11111, 
     "status": "ADMIN" 
    }, 
    { 
     "uid": 22222 
    } 
] 

i lodash verwenden für den Schlüssel uid finden = 22222

_.find (Daten, (Artikel) => item.uid === 22222)

das Ergebnis {uid: 22222}

wie kann ich einige Status: „va lue“in Folge, dass ich von lodash finden i erwarten ähnliche

[ 
    { 
     "uid": 11111, 
     "status": "ADMIN" 
    }, 
    { 
     "uid": 22222, 
     "status": "USER" 
    } 
] 

Antwort

0

Dieses Sie das Objekt gibt, so dass Sie nur mit ihm arbeiten können direkt:

_.find(data, item => item.uid === 22222).status = "USER"; 

Andernfalls können Sie den Index erhalten und Aktualisieren Sie das gesamte Objekt.

const idx = _.findIndex(data, item => item.uid === 22222); 
data[idx] = Object.assign(data[idx], {status: "USER"}); 

Je nach Umgebung, in der Sie arbeiten, Sie müssen nicht lodash bedienen und Sie können nur data.find verwenden.

1

Sie können _.find(), um das Objekt zu bekommen, und _.set() es zu aktualisieren:

var data = [{"uid":11111,"status":"ADMIN"},{"uid":22222}]; 
 

 
_.set(_.find(data, function(obj) { return obj.uid === 22222; }), 'value', 'USER'); 
 

 
_.set(_.find(data, function(obj) { return obj.uid === 23322; }), 'value', 'USER'); // no object was found and nothing changed 
 
    
 
console.log(data);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

0

Sie nicht lodash benötigen, verwenden Array.prototype.find:

var arr = [ 
    { 
    "uid": 11111, 
    "status": "ADMIN" 
    }, 
    { 
    "uid": 22222 
    } 
] 

// get correct item in array 
var item = arr.find(i => i.uid === 22222) 
// object is mutable, array have a pointer to the object 
item.status = 'USER' 

console.log(arr) 

Here is a jsbin to play around.

Wenn Sie in einer alten Umgebung (Internet Explorer mostly) sind, verwenden Array.prototype.filter:

// will be undefined if not found, so check for that 
var item = arr.filter(i => i.uid === 22222)[0] 
Verwandte Themen