我有这个数组:
var type = ["Petrol", "Petrol", "Transport", "Petrol", "Transport", "Personal"];
var price = [100,250,50,25,10,20];
基本上type[0]
和price[0]
是类型及其价格。 Petrol = $ 100
。根据数组索引与其他人相同。
我想在数组type
中找到重复的元素,然后将它们price
添加到日志中。
示例:
type[0]
和type[3]
是重复元素Petrol
。所以我想添加他们的值price[0]
+ [price[3]
,只要有相同的元素。
我在这里取得了一些进展JSFIDDLE。但它只能使用2个相同的元素,更重要的是,它不会起作用,而且它也很麻烦。
答案 0 :(得分:3)
这看起来不那么混乱IMO
var result = {};
type.forEach(function(name, i) {
result[name] = (result[name] || 0) + price[i]
});
console.log(result) // { Petrol: 375, Transport: 60, Personal: 20 }
答案 1 :(得分:2)
使用对象不是更简单吗?使用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>';
}
这就是它的全部。
答案 2 :(得分:2)
您也可以试试这个。
<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);
答案 3 :(得分:0)
使用对象属性怎么样?
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
}
*/