删除数组中的重复值并合并与第二个数组关联的值

时间:2017-12-13 08:54:39

标签: javascript

我有两个阵列 第一个是incomeTitle,它包含以下值:

let aryOne = ["salary","pension","salary","rent","wages","rent"]

,第二个数组是incomeAmount,它包含以下值:

let aryTwo = ["100","900","100","800","5000","200"]
  

这两个数组值是相关的:eg-

     
    

工资为100,养老金为900,工资分别为2     所以工资价值应该是200

  

最后,我想要两个相应的数组如下:

let incomeTitle = ["salary","pension","rent","wage"]
let incomeAmount = ["200", "900", "1000", "5000"]

我试过这样做:

for(i=0;i<=noOfIncome;i++){
      for(var j=i+1;j<=noOfIncome;j++){
        if(this.incomeTitle[i]==this.incomeTitle[j]){
          var abc=  parseInt(this.incomeTitleAmount[i])+parseInt(this.incomeTitleAmount[j]);
          this.incomeTitleAmount.push(abc);
          this.incomeTitle.push(this.incomeTitle[i]);
        }
      }
      this.incomeTitle.splice( i, 1 );
      this.incomeTitleAmount.splice(i,1);
    }

2 个答案:

答案 0 :(得分:1)

您可以为具有相同值array1的索引获取哈希表。

如果在哈希表中找到一个值,您可以将该值添加到哈希索引处的值并拼接两个数组。

如果未找到,则取下索引并继续下一个索引。

var array1 = ["salary", "pension", "salary", "rent", "wages", "rent"],
    array2 = ["100", "900", "100", "800", "5000", "200"],
    hash = Object.create(null),
    i = 0;

while (i < array1.length) {
    if (array1[i] in hash) {
        array2[hash[array1[i]]] = (+array2[hash[array1[i]]] + +array2[i]).toString();
        array1.splice(i, 1);
        array2.splice(i, 1);
        continue;
    }
    hash[array1[i]] = i;
    i++;
}

console.log(array1);
console.log(array2);
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 1 :(得分:0)

我这样做:

var income = ['salary', 'pension', 'salary', 'rent', 'wages', 'rent'];
var amount = ['100', '900', '100', '800', '5000', '200'];

var income2 = [];
var amount2 = [];

income.forEach((title, i) => {
   let j = income2.indexOf(title);
   let value = parseInt(amount[i]);
   if (j > -1) {
      amount2[j] += value;
   } else {
      income2.push(title);
      amount2.push(value);
   }
});

amount2 = amount2.map(String);

console.info(income2, amount2);
相关问题