2016-11-10 50 views
0

我有一個對象數組,每個對象都包含一個名爲title的屬性。
title屬性可以保存兩個可能的字符串值之一 - "main""local"。數組中只有一個元素可以具有"main"作爲其title值,其餘元素應將其title屬性設置爲"local"當設置了另一個對象的屬性時自動更新JavaScript對象屬性

例如,採取以下陣列:

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

place:"USA"對象的title屬性設置爲"main」,我想place:"UK"對象的title屬性被自動設置爲"local"

如何實現。這與JavaScript?

+0

你問題不清楚。你想交換價值嗎?像'local'的'main'就位,反之亦然。 –

+0

是的,我想交換值...如果我改變的地方美國對象標題是主要手段,其他對象標題應該改變它本地 – Sathya

+0

如果你試圖使'main'爲'本地',那麼會發生什麼? – Bharat

回答

1

一種方法是將所有title值設置爲local,然後將所需的對象設置爲main。 另一種方法是記住哪個索引當前設置爲main,並在需要更改main時將其恢復爲本地。

0

下面將回報您的數組的副本與所需的更改:

隨着ES6 /巴貝爾:

// Example: 
somePlace = 'USA'; 

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

香草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"; 
}