题解 | #合并表记录#
合并表记录
https://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
var myMap = new Map();
while(line = await readline()){
let tokens =line.split(' ');
if(tokens.length === 2){//第一个输入的是键值对的数量,之后长度为2的数组才是键值对
let k = parseInt(tokens[0]);
let v = parseInt(tokens[1]);//传入的数组的值是字符,转为数字
if(myMap.has(k)){
v += myMap.get(k);
myMap.set(k, v);//如果myMap中含有当前的键,将相加之后的值作为这个键的新值
}
else{
myMap.set(k, v);//如果myMap中没有当前的键,将键值对添加进myMap
}
}
}
let nMap = new Map([...myMap].sort(function(a,b){//将一个数组直接创建为一个新的map
return a[0] - b[0];
}))//对myMap进行升序排列
nMap.forEach(function(val, key){
console.log(key + " " + val)
}, myMap);//输出nMap的键和值
}()
我的方法
map对象添加键值对需要用.set
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void async function () {
// Write your code here
var myMap = new Map();
while(line = await readline()){
let tokens =line.split(' ');
if(tokens.length === 2){//第一个输入的是键值对的数量,之后长度为2的数组才是键值对
let k = parseInt(tokens[0]);
let v = parseInt(tokens[1]);//传入的数组的值是字符,转为数字
if(myMap.has(k)){
v += myMap.get(k);
myMap.set(k, v);//如果myMap中含有当前的键,将相加之后的值作为这个键的新值
}
else{
myMap.set(k, v);//如果myMap中没有当前的键,将键值对添加进myMap
}
}
}
let nMap = new Map([...myMap].sort(function(a,b){
return a[0] - b[0];
}))//对myMap进行升序排列
nMap.forEach(function(val, key){
console.log(key + " " + val)
}, myMap);//输出nMap的键和值
}()
小牛很六——的方法
用的是对象的方法,对象中的键也是唯一的
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void (async function () {
let arr = [];
void (async function () {
// Write your code here
while ((line = await readline())) {
arr.push(line);
const length = parseInt(arr[0]);
if (arr.length === length + 1) {
arr = arr.slice(1);
arr = arr.map((it) => it.split(" "));
arr.sort((a, b) => a[0] - b[0]);
let obj = {};
arr.forEach((it) => {
if (!obj[it[0]]) {
obj[it[0]] = Number(it[1]);
} else {
obj[it[0]] += Number(it[1]);
}
});
Object.keys(obj).forEach((it) => {
let a = [];
a.push(it, obj[it]);
console.log(a.join(" "));
});
}
}
})();
})();
sky077——的方法
.map()方法是对arr中的每一项都进行函数处理并返回这个新数组,不会对原数组造成影响。所以需要用数组接收。
练练练练练 文章被收录于专栏
练练练练练

查看8道真题和解析