博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js常见算法(一):数组去重,打乱数组,统计数组各个元素出现的次数, 字符串各个字符的出现次数,获取地址链接的各个参数...
阅读量:7196 次
发布时间:2019-06-29

本文共 3299 字,大约阅读时间需要 10 分钟。

数组去重,打乱数组,统计数组各个元素出现的次数, 字符串各个字符的出现次数,获取地址链接的各个参数

以后会记录自己解决过和遇到过的算法相关的题,系列一就以常见的开篇吧。

数组去重

  1. 遍历数组法
var arr = ['2', 1, 5, 4, 7, '9', 4, 1, '2', 6, 8, 2];for (var i = 0, newArr = [], len = arr.length; i < len; i++){	if (newArr.indexOf(arr[i]) == -1) {		newArr.push(arr[i]);	}}console.log(newArr);复制代码
  1. 数组下标判断法
var arr = ['2', 1, 5, 4, 7, '9', 4, 1, '2', 6, 8, 2];for (var i = 1, newArr = [arr[0]], len = arr.length; i < len; i++){	if (arr.indexOf(arr[i]) == i) {		newArr.push(arr[i]);	}}console.log(newArr);复制代码
  1. 对象键值对法
var arr = ['2', 1, 5, 4, 7, '9', 4, 1, '2', 6, 8, 2];for (var i = 0, obj = {}, newArr = [], len = arr.length, val, type; i < len; i++){	val = arr[i];	type = typeof val;	if (!obj[val]) {  // 对象没有该键对应的值		obj[val] = type;		newArr.push(val);	} else if (obj[val].indexOf(type) < 0) {//对象有该键对应的值且它的值是不重复的		obj[val] = type;		newArr.push(val);	}}console.log(newArr);复制代码
  1. 排序后相邻去除法
var arr = ['2', 1, 5, 4, 7, '9', 4, 1, '2', 6, 8, 2];arr.sort();var newArr = [arr[0]];for (var i = 1, len = arr.length; i < len; i++) {	if (arr[i] !== newArr[newArr.length-1]) {		newArr.push(arr[i]);	}}console.log(newArr);复制代码
  1. 优化遍历数组法
var arr = ['2', 1, 5, 4, 7, '9', 4, 1, '2', 6, 8, 2];for (var i = 0, len = arr.length, newArr = []; i < len; i++) {	for (var j = i + 1; j < len; j++) {		if (arr[i] === arr[j]) j = ++i;	}	newArr.push(arr[i]);}console.log(newArr);复制代码
  1. 利用splice直接在原数组进行操作
var arr = ['2', 1, 5, 4, 7, '9', 4, 1, '2', 6, 8, 2];for (var i = 0, len = arr.length; i < len; i++) {	for (var j = i + 1; j < len; j++) {		if (arr[i] === arr[j]) {			arr.splice(j, 1);			len--;			j--;		}	}}console.log(arr);复制代码
  1. es6简化版
var arr = ['2', 1, 5, 4, 7, '9', 4, 1, '2', 6, 8, 2];// 7.1var newArr = [...new Set(arr)]; console.log(newArr);// 7.2var newArr = Array.from(new Set(arr));console.log(newArr);复制代码
// 数组去重,打乱数组,统计数组各个元素出现的次数, 字符串各个字符的出现次数,获取地址链接的各个参数复制代码

打乱数组

var arr = [2,5,'6',3,9,'2',4,7];arr.sort(function(){ return 0.5 - Math.random() });console.log(arr);复制代码

统计数组各个元素出现的次数

  1. 自创
var arr = ['2', 1, 5, 4, 7, '9', 4, 1, '2', 6, 8, 2];for (var i = 0, len = arr.length, newArr = []; i < len; i++) {	var isPush = true;	for (var j = 0, l = newArr.length; j < l; j++) {		if (arr[i] === newArr[j].val) {			isPush = false;			newArr[j].count++;		}	}	if (isPush) {		newArr.push({val: arr[i], count: 1});	} else {		isPush = true;	}}console.log(newArr);复制代码
  1. es6
var arr = ['2', 1, 5, 4, 7, '9', 4, 1, '2', 6, 8, 2];var newArr = arr.reduce((arrs, cv) => {	const found = arrs.find(it => it[0] === cv);	if (found) {		found[1] += 1;	} else {		arrs.push([cv, 1]);	}	return arrs;}, []);console.log(newArr);复制代码

字符串各个字符的出现次数

var str = 'abdcsdwdaoprr';for (var i = 0, len = str.length, obj = {}; i < len; i++) {	if (obj[str[i]]) {		obj[str[i]]++;	} else {		obj[str[i]] = 1;	}}console.log(obj);复制代码

获取地址链接的各个参数

var url = 'https://www.google.com.hk/search?safe=strict&ei=M_u5WvLZO4bzUrfpn_AJ&q=js%9F%&oq=js%E7%BB&gs_l=psy-ab';var search = url.substring(url.indexOf('?')+1);	var tmpArr = search.split('&');	var urlParmObj = {};	if (tmpArr.length > 0 && tmpArr[0] != '') {			for (var i = 0, len = tmpArr.length; i < len; i++) {					var tmp = tmpArr[i].split('=');					urlParmObj[tmp[0]] = tmp[1];			}	}	console.log(urlParmObj);复制代码

es6 实践

var arr = [1,2,3,4,5];const param = arr.find(it => it === 5);param += 1;console.log(arr);复制代码

转载地址:http://dwakm.baihongyu.com/

你可能感兴趣的文章
Reladomo:自备全套功能的企业级开源Java ORM(一)
查看>>
为所有PHP-FPM容器构建单独的NGinx Dock镜像
查看>>
Java将每半年发布一个版本
查看>>
加州无人车报告出炉,苹果表现垫底,国产车进前五
查看>>
亚马逊向GuardDuty服务添加三种新的威胁检测规则
查看>>
大规模学习该如何权衡得失?解读NeurIPS 2018时间检验奖获奖论文
查看>>
基础设施即代码:Terraform和AWS无服务器
查看>>
Facebook开源ptr:在Python环境中并行运行单元测试
查看>>
回应抗议,JetBrains放宽了许可条款
查看>>
Plaid.com的监控系统如何实现与9600多家金融机构的集成
查看>>
Deis发布1.4版本,支持Microsoft Azure
查看>>
别了MongoDB?
查看>>
Druid 在有赞的使用场景及应用实践
查看>>
四种方式主导你的第一个敏捷项目
查看>>
为什么区块链永远不会干掉数据库
查看>>
微软超过苹果 成为全球第一大市值公司
查看>>
linux 内核移植(六)——C语言启动部分分析(一)
查看>>
Unix高级环境编程
查看>>
2017 Transformation Days |国际数据处理大咖SNP首次来华
查看>>
揭秘天猫未来小店背后的NEC the WISE技术群
查看>>