nodejs - 数组搜索和追加

时间:2017-04-27 08:24:22

标签: javascript arrays node.js

我需要节点专家的帮助......我必须使用的版本是0.10.x

我有一个这样的数组:

[ 
    [ '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' ] ]

  3. 请帮忙

1 个答案:

答案 0 :(得分:0)

您的对象初始值:

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

现在如果DDD不存在,只需添加它:

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});
}

如果ABC存在,请将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;
    }
  })

}