[英]How do I find same element in an array and sum of their values
我有這個數組:
var type = ["Petrol", "Petrol", "Transport", "Petrol", "Transport", "Personal"];
var price = [100,250,50,25,10,20];
基本上, type[0]
和price[0]
是type及其價格。 Petrol = $ 100
。 根據其他人的數組索引與其他人相同。
我想在數組type
查找重復的元素並添加其price
然后顯示到日志中。
范例:
type[0]
和type[3]
是重復元素,即Petrol
。 因此,我想添加它們的值price[0]
+ [price[3]
,只要存在相同的元素。
我在這里JSFIDDLE取得了一些進展。 但是它只能與2個相同的元素一起使用,更多的是,它將不起作用,並且幾乎沒有混亂。
IMO看起來不那么混亂
var result = {};
type.forEach(function(name, i) {
result[name] = (result[name] || 0) + price[i]
});
console.log(result) // { Petrol: 375, Transport: 60, Personal: 20 }
為此使用對象會更簡單嗎? 使用type
數組作為鍵,並將price
的值添加到每個鍵:
就像在您的小提琴中那樣,您正在跟蹤運行的總數,我也在這里添加了它:
var total = 0,
typePrice = {};//creates object
for (var i=0;i<types.length;++i)
{
if (!typePrice.hasOwnProperty(types[i]))
{//type not set on object
typePrice[types[i]] = 0;//set to 0
}
typePrice[types[i]] += price[i];
total += price[i];
}
console.log(typePrice);
//then to list:
var elem = document.querySelector('#foo');
for (var p in typePrice)
{
if (typePrice.hasOwnProperty(p))
elem.innerHTML += p + ': ' + typePrice[p] + '<br>';
}
這就是全部。
您也可以嘗試一下。
<span id="op"></span>
var type = ["Petrol", "Petrol", "Transport", "Petrol", "Transport", "Personal"];
var price = [100,250,50,25,10,20];
var str='';
for(var i=0;i<type.length;i++){
for(j=i+1; j<type.length; j++){
if(type[j]==type[i]){
price[i] += price[j];
price.splice(j,1);
type.splice(j,1);
}
}
}
$.each(type, function(i){
str += type[i]+':'+price[i]+' ';
});
$('#op').text(str);
小提琴: http : //jsfiddle.net/whe2f4uj/1/
使用對象屬性呢?
var type = ["Petrol", "Petrol", "Transport", "Petrol", "Transport", "Personal"];
var price = [100,250,50,25,10,20];
var result = {};
for(var i = 0 ; i < type.length ; i++) {
var t = type[i];
if(result[t]) {
result[t] += price[i];
} else {
result[t] = price[i];
}
}
/*
result = {
Petrol : 375,
Transport: 60,
Personal : 20
}
*/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.