题解 | #合并表记录#
合并表记录
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中的每一项都进行函数处理并返回这个新数组,不会对原数组造成影响。所以需要用数组接收。
练练练练练 文章被收录于专栏
练练练练练