2017-04-27 88 views
-4

我需要從節點專家的幫助......我必須使用的版本是0.10.x的NodeJS - 陣列搜索和追加

我有一個這樣的數組:

[ 
    [ 'ABC', '5' ] , 
    [ 'BCD', '1' ] 
] 

,我有新的價值觀輸入[ 'DDD', '3' ][ 'ABC', '4' ],我想要實現的是搜索第一列是否存在於數組中 - 如果是,則總結第二列,如果不是,則只需將值添加到數組中。

在結果我希望有:

  1. 添加[ 'DDD', '3' ] - DDD不數組存在,它將被添加

    [ [ 'ABC', '5' ] , [ 'BCD', '1' ] , [ 'DDD', '3' ] ]

  2. [ 'ABC', '4' ] - ABC在陣列存在所以第二列將彙總爲ABC

    [ [ 'ABC', '9' ] , [ 'BCD', '1' ] , [ 'DDD', '3' ] ]

請幫

+1

你有什麼試過的? –

+0

你的源數組與你想實現的目標無關?你有更好的例子嗎? – Alex

+0

@Ryad - 我不是很熟練,所以我沒有嘗試任何東西... – mfpass

回答

0

你的對象初始值:如果ABC存在,總和

var DDD = "3" 
var DDDExists = false; 

myObj.forEach(function(){ 
    if(this.DDD.length > 0){ 
    // If it exists, break the loop 
    DDDExists = true; 
    break; 
    } 
}) 

// If DDD doesn't exists, add it 
if(DDDExists === false){ 
    // Add DDD object to array 
    myObj.push({'DDD': 3}); 
} 

現在:

var myObj = [{'ABC': '5'}, {'BCD': '1'}] 

現在,如果DDD不存在,只是將它加入ABC到所有可用值:

// Check if ABC exists 
var ABCExsits = false; 

myObj.forEach(function(){ 
    if(this.ABC.length > 0){ 
    // If ABC exits, break the loop 
    ABCExists = true; 
    break; 
    } 
}) 

if(ABCExists === true){ 

    // Sum all the values 
    var totalSum = 0; 

    myObj.forEach(function(){ 
    // Since we don't know the name property of the obj, we need to do a for loop 
    for(var prop in this){ 
     totalSum = totalSum + this[prop]; 
    }  
    }) 

    // Now add `totalSum` to ABC 

    myObj.foreach(function(){ 
    if(this.ABC.length > 0){ 
     this.ABC = totalSum; 
     break; 
    } 
    }) 

} 
+0

我調整了一下,但它適用於我!謝謝! – mfpass