我的代码存在问题。
function openOrSenior(data) {
"use strict";
let myMap = new Map(data);
let test = [];
let old = [];
let val = [];
for(let key of myMap.keys()){
old.push(key);
}
for(let value of myMap.values()){
val.push(value);
}
for(let i = 0; i < data.length; i++){
if(old[i] >= 55 && val[i] > 7){
test.push("Senior");
} else { test.push("Open");}
}
return test;
}
如果我有这样的输入并调试我的代码:
openOrSenior([[21,21],[0,0],[90,8],[1,1],[60,12],[90,7],[75,11],[55 ,10],[90,9],[54,9]]);
我的地图有以下关键值和价值对:myMap
它没有按照正确的顺序排列,并且不包含所有键 - &gt;值对,但是如果我将输入的子集这样:
openOrSenior([[21,21],[0,0],[90,8]]);
守则符合我的要求:Here is the picture
我做错了什么?
最好的问候
答案 0 :(得分:0)
正如我上面评论的那样,Map有唯一的键。但是,您可以扩展Map类并创建Multimap。下面是一个非常(非常非常)简单的实现。下面将所有值添加到在key处找到的数组中,如果该键已经存在于Multimap中,则推送到现有值,您可以使用set()
添加元素
class Multimap extends Map {
constructor(arrOfArr = [[]]) {
super(arrOfArr);
}
set(key, value) {
super.set(key, super.has(key) ? super.get(key).concat(value) : [value]);
}
}
let foo = new Multimap([[21, 21], [0, 0], [90, 8], [1, 1], [60, 12], [90, 7], [75, 11], [55, 10], [90, 9], [54, 9]]);
foo.set(21, 22);
for (let [k,v] of foo.entries()) {
console.log(k, v);
}
&#13;