2016-11-10 4 views
0

gesetzt Ich habe ein Array von Objekten, die jeweils eine Eigenschaft title Namen enthält.
Die title Eigenschaft kann einen von zwei möglichen Stringwerte halten - "main" oder "local". Nur ein einziges Element in der Anordnung kann zu einem gegebenen Zeitpunkt als "main"title Wert hat, und der Rest der Elemente sollte ihre title Eigenschaft auf "local" gesetzt hat.automatisch aktualisieren Objekteigenschaft JavaScript, wenn eine andere Eigenschaft des Objekts

Nehmen Sie zum Beispiel die folgende Array:

var locations = [ 
    { 
    title:"main", 
    place:"UK" 
    }, 
{ 
    title:"local", 
    place:"USA" 
    }, 
{ 
    title:"local", 
    place:"RUSSIA" 
    } 
] 

Wenn die place:"USA"title Eigenschaft auf "main“Objekteinstellung, ich will place:"UK" Objekt title Eigenschaft automatisch auf "local" gesetzt werden

Wie zu erreichen. dies mit Javascript?

+0

Ihre Frage ist nicht klar. Möchtest du die Werte tauschen? wie 'main' anstelle von' local' und umgekehrt. –

+0

Ja, ich möchte die Werte tauschen ... Wenn i Ort USA ändern Objekttitel Hauptmittel ist, ein anderes Objekt Titel ändern lokalen – Sathya

+0

werden sollten, wenn Sie versuchen, 'main' als' local' zu machen dann, was passieren soll? – Bharat

Antwort

1

Eine Möglichkeit, dies zu tun, wird alle title Werte local, bevor das gewünschte Objekt auf main gesetzt wird. Eine weitere Möglichkeit, sich daran zu erinnern, welcher Index derzeit main gesetzt ist und es zu lokalen zurückkehren, wenn main geändert werden soll.

0

Im Folgenden wird eine Kopie Ihrer Array mit den gewünschten Änderungen zurück:

Mit ES6/Babel:

// Example: 
somePlace = 'USA'; 

const newLocations = locations.map(l => 
    { ...l, title: l.place === somePlace ? 'main' : 'local' } 
); 

mit Vanille JS/Lodash:

// Example: 
somePlace = 'USA'; 

var newLocations = _.map(locations, function (l) { 
    return _.assign({}, l, { title: l.place === somePlace ? 'main' : 'local' }); 
); 
0
var newMainIndex = 2; 
var locations = [ 
    { 
    title:"main", 
    place:"UK" 
    }, 
{ 
    title:"local", 
    place:"USA" 
    }, 
{ 
    title:"local", 
    place:"RUSSIA" 
    } 
]; 

for(var i=0, len=locations.length;i<len;i++){ 
    locations[i].title = i === newMainIndex ? "main" : "local"; 
} 
Verwandte Themen