首页 > 其他分享 >测试啊

测试啊

时间:2022-10-22 16:11:39浏览次数:43  
标签:arr countObj 测试 sortKey item key 排序

1-100范围中,有1000个可重复的数,以出现次数的多少排序,返回一个新数组?

  • 蹦出来的第一个直观的解法,用一个对象将遍历的数组的出现次数记录下来,然后把记录的值排序,反查key,然后合并成一个数组。值排序处卡壳了一下。反思了下,得到一个有点笨但理解容易的解法。
/**
 * 根据对象的一个属性排序 
 * @param data 原始数组(数组单个元素为对象)
 * @param sortKey 要根据排序的key
 * @param type desc 倒序, asc 正序
 */
function sortObjArrByKey(data, sortKey, type) {
    let arr = [...data];
    if (type === 'asc') {
        arr.sort((a, b) => a[sortKey] - b[sortKey]);
    } else if (type === 'desc') {
        arr.sort((a, b) => b[sortKey] - a[sortKey]);
    }
    return arr;
}

/**
 * 以数字出现的次数排序
 * @param  原始数组
 */
function sortArrByCount(arr) {
    var countObj = {};
    var originCountArr = [];
    arr.forEach(item => {
        countObj[item] = countObj[item] ? countObj[item] + 1 : 1;
    });
    console.log('countObj', countObj);
    originCountArr = Object.keys(countObj).map(key => {
        return {
            key: key,
            value: countObj[key],
        };
    });
    var sortedCountArr = sortObjArrByKey(
        originCountArr,
        'value',
        'desc'
    );
    let sortedCountNumArr = sortedCountArr.map(item => +item.key);
    console.log('result:', sortedCountNumArr);
    return sortedCountNumArr;
}

// 用少量数量模拟一下
var arr = [1, 4, 2, 1, 5, 7, 8, 10, 25, 11, 10, 7, 100, 7, 20];
let resultArr = sortArrByCount(arr);

输出结果:
在这里插入图片描述

应该还有其他更精妙的解法,想到了补充。

标签:arr,countObj,测试,sortKey,item,key,排序
From: https://www.cnblogs.com/haokur/p/16816291.html

相关文章

  • 《MiniPRO H750开发指南》第六十四章 综合测试实验
    第六十四章综合测试实验​为了方便大家使用和验证综合例程,本章内容是综合例程的使用介绍。目的是展示STM32H7的强大处理能力,并且可以测试开发板的大部分功能。本实验代码只......
  • 符合性测试的先决条件和评价活动内容
    标准符合性测试是测量产品的功能和性能指标,与相关国家标准或行业标准所规定的功能和性能等指标之间符合程度的测试活动。它区别于一般的测试,标准符合性测试的测试依据和测试......
  • 符合性测试的评价过程
    (1)对软件产品及其产品说明和用户文档集实施符合性评价1)产品说明评价对产品说明的内容从可用性、内容、标识和标示、映射、产品质量(包括功能性、性能效率、兼容性、易用性、......
  • 符合性测试评价报告
    实施符合性测试和评价后,符合性评价组织应该出具包含被评价产品符合性评价结果的符合性评价报告。符合性评价报告应包含以下内容:●符合性评价报告唯一标识;●软件产品标识;●......
  • 落地自动化测试之前需要考虑的事
    1、当前面临的痛点是什么?引入自动化测试是为了解决工作过程中遇到的问题或痛点,所以在引入之前第一个要考虑的是当前面临的痛点是什么。比如:线上功能bug频发,人......
  • 依从性测试
    依从性测试用于评估产品或系统遵循与功能性、性能效率、易用性、可靠性、信息安全性、维护性、兼容性、可移植性等八个质量特性有关的标准、约定和法规以及类似规定的程度。......
  • 自动化测试 - php调用jenkins-api构建job
    背景:前一节搭建jenkins并创建了job任务后,用户可以在jenkins平台手动点击构建来执行pytest自动化任务,想实现一个从web界面去触发构建jenkins中的job任务,在这选择使用php来调......
  • C语言输入输出测试
    一、输入测试(1)输入数值测试三个%d之间的间隔分别为(无)(逗号)(空格)三种情况,应该如何正常输入,要求得到正确输出间隔分别为(空格时候),输入的时候以回车间隔是否可以?#include<......
  • 测试项目(五):数据分页查询(后端接口)
    好家伙, 这里我们必须考虑:当数据库表单数据过多时,我们必须增加分页展示想想上百条数据一页展示完,那么可能找不到我要的那条数据了 我们前后端分开处理:本篇介绍完成后......
  • 个人摸底测试总结(第一天)
    1,网页中如何让一个div垂直居中?(越多越好)方案一:div绝对定位水平垂直居中【margin:auto实现绝对定位元素的居中】div{width:200px;height:200px;postion:absolute;t......