用它的相关计数和值的总数来计算唯一值

时间:2015-05-11 02:39:48

标签: javascript jquery loops conditional-statements

这可能很简单但我现在很震惊。我有一个数组

items=["shelter","tent","shelter","injured","displaced","displaced"] 

它的值与它的相应值

magnitude = [5,12,6,9,13,2]  

现在,任务是添加item_name及其相应的总幅度和出现次数:

  

11人住所,
  12人帐篷,
  9人受伤,
  15人流离失所

我尝试了一些循环和条件,但我现在累了。提前谢谢你的帮助。

3 个答案:

答案 0 :(得分:0)

如果你想这样做,可以使用$ .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);

这里我们循环使用项目并放入地图,如果我们已经将值添加到旧的值中。 希望它有所帮助。

答案 1 :(得分:0)

您可以从创建这样的对象开始:

var map = {};
for (var i = 0, count = items.length; i < count; i++) {
    map[items[i]] = (map[items[i]] || 0) + magnitude[i];
}

jsfiddle

您可以像这样查看值:

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');

答案 2 :(得分:0)

您可以执行类似

的操作
face_test

演示:Fiddle