计算唯一值及其关联计数和值总数
counting unique values with it's associated count and total number of values
这可能很简单,但我现在很震惊。我有一个数组
items=["shelter","tent","shelter","injured","displaced","displaced"]
它的值与它各自的值一样
magnitude = [5,12,6,9,13,2]
现在,任务是添加 item_name 及其各自的总大小和出现次数:
shelter for 11 people,
tent for 12 people,
9 people injured,
15 people displaced
我尝试了一些循环和条件,但我现在累了。提前谢谢你的帮助。
如果你想这样做,你可以使用 $.each,像这样:
var items=["shelter","tent","shelter","injured","displaced","displaced"]
var magnitudes = [5,12,6,9,13,2]
var map = new Map();
$.each(items,function(key,value) {
console.log(value);
var element = map.get(value);
if(element == undefined)
element = 0;
var element = element + magnitudes[key];
map.set(value,element);
})
console.log(map);
这里我们在项目中循环并放入地图,如果我们已经有了值,我们将新值添加到旧值。
希望对你有帮助。
您可以像这样创建一个对象:
var map = {};
for (var i = 0, count = items.length; i < count; i++) {
map[items[i]] = (map[items[i]] || 0) + magnitude[i];
}
您可以这样查看值:
for (var item in map) {
console.log(item + ': ' + map[item]);
}
或者像这样单独访问它们:
console.log('shelter for ' + map['shelter'] + ' people');
console.log('tent for ' + map['tent'] + ' people');
console.log(map['injured'] + ' people injured');
console.log(map['displaced'] + ' people displaced');
你可以这样做
var msgs = {
shelter: 'shelter for {count} people',
tent: 'tent for {count} people',
injured: '{count} people injured',
displaced: '{count} people displaced'
};
tems = ["shelter", "tent", "shelter", "injured", "displaced", "displaced"];
magnitude = [5, 12, 6, 9, 13, 2];
var tmp = {};
for (var i = 0; i < tems.length; i++) {
tmp[tems[i]] = (tmp[tems[i]] || 0) + 1;
}
var array = [];
for (var key in tmp) {
array.push(msgs[key].replace('{count}', tmp[key]))
}
console.log(array)
演示:Fiddle
这可能很简单,但我现在很震惊。我有一个数组
items=["shelter","tent","shelter","injured","displaced","displaced"]
它的值与它各自的值一样
magnitude = [5,12,6,9,13,2]
现在,任务是添加 item_name 及其各自的总大小和出现次数:
shelter for 11 people,
tent for 12 people,
9 people injured,
15 people displaced
我尝试了一些循环和条件,但我现在累了。提前谢谢你的帮助。
如果你想这样做,你可以使用 $.each,像这样:
var items=["shelter","tent","shelter","injured","displaced","displaced"]
var magnitudes = [5,12,6,9,13,2]
var map = new Map();
$.each(items,function(key,value) {
console.log(value);
var element = map.get(value);
if(element == undefined)
element = 0;
var element = element + magnitudes[key];
map.set(value,element);
})
console.log(map);
这里我们在项目中循环并放入地图,如果我们已经有了值,我们将新值添加到旧值。 希望对你有帮助。
您可以像这样创建一个对象:
var map = {};
for (var i = 0, count = items.length; i < count; i++) {
map[items[i]] = (map[items[i]] || 0) + magnitude[i];
}
您可以这样查看值:
for (var item in map) {
console.log(item + ': ' + map[item]);
}
或者像这样单独访问它们:
console.log('shelter for ' + map['shelter'] + ' people');
console.log('tent for ' + map['tent'] + ' people');
console.log(map['injured'] + ' people injured');
console.log(map['displaced'] + ' people displaced');
你可以这样做
var msgs = {
shelter: 'shelter for {count} people',
tent: 'tent for {count} people',
injured: '{count} people injured',
displaced: '{count} people displaced'
};
tems = ["shelter", "tent", "shelter", "injured", "displaced", "displaced"];
magnitude = [5, 12, 6, 9, 13, 2];
var tmp = {};
for (var i = 0; i < tems.length; i++) {
tmp[tems[i]] = (tmp[tems[i]] || 0) + 1;
}
var array = [];
for (var key in tmp) {
array.push(msgs[key].replace('{count}', tmp[key]))
}
console.log(array)
演示:Fiddle