2017-06-22 43 views
0

我是javascript的初學者。我想用filter來擠壓這段代碼。我想創建一個對象,併爲一些索引添加一個屬性,併爲另一個索引分配不同的屬性。使用過濾器將屬性添加到不同索引的對象

var nodeAttribute=new Object(); 
var minorityNodes=[ 22, 1, 2, 10, 14, 23, 25, 4, 15 ]; 
var N=30; 
for (var i=0; i<N; i++){ 
    if (minorityNodes.indexOf(i) >= 0){ 
     nodeAttribute[i]='minority'; 
    }else{ 
     nodeAttribute[i]='majority'; 
    } 
} 

應該怎麼做?

更新

nodeAttribute 
{ '0': 'majority', 
    '1': 'minority', 
    '2': 'minority', 
    '3': 'majority', 
    '4': 'minority', 
    '5': 'majority', 
    '6': 'majority', 
    '7': 'majority', 
    '8': 'majority', 
    '9': 'majority', 
    '10': 'minority', 
    '11': 'majority', 
    '12': 'majority', 
    '13': 'majority', 
    '14': 'minority', 
    '15': 'minority', 
    '16': 'majority', 
    '17': 'majority', 
    '18': 'majority', 
    '19': 'majority', 
    '20': 'majority', 
    '21': 'majority', 
    '22': 'minority', 
    '23': 'minority', 
    '24': 'majority', 
    '25': 'minority', 
    '26': 'majority', 
    '27': 'majority', 
    '28': 'majority', 
    '29': 'majority' } 
+0

它不是那麼清楚..應該如何產生的陣列看? – Shayuh

+0

@ Y.Hewa我在問題中添加了一個示例結果。 – Dalek

+0

此代碼有效 - 爲什麼使用'filter'? –

回答

0

我不知道怎麼會filter幫助這個場景(或者性能),因爲它遍歷集合並返回一個子集。

如果您定位的現代瀏覽器,你可以使用更快的查找一組(對不起,如果語法不正確,我對移動):

var nodeAttribute={}; 
var minorityNodes=new Set([22, 1, 2, 10, 14, 23, 25, 4, 15 ]); 
var N=30; 
for (var i=0; i<N; i++){ 
    if (minorityNodes.has(i)) { 
     nodeAttribute[i]='minority'; 
    }else{ 
     nodeAttribute[i]='majority'; 
    } 
} 

如果無法使用一組,使用對象:

var minorityNodes = { 
    22: true, 
    1: true, 
    // etc 
}; 

,並檢查是否存在:

if (minorityNodes[i]) ... 
+0

感謝您的答案,但它幾乎類似於我發佈的問題。我想知道是否可以在這裏使用'filter'功能? – Dalek

+0

由於設置/對象查找時間,這更快。我不知道你爲什麼要使用'filter'。它返回一個集合的子集 - 哪個集合需要一個子集?也許我誤解了。 –