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