数组去重
来源:互联网 发布:linux有什么认证 编辑:程序博客网 时间:2024/05/21 06:41
相似问题:
1.给一个数组,去掉重复的
2.给一个数组,把重复的元素都删了,只要出现一次的
3.求出一个数组中出现次数最多的元素和次数
在此仅提供一个比较好记忆的方法,首先定义个对象,对象的键保存数组的元素,值保存出现的次数,遍历数组将数组的信息填写进对象中,如果某元素出现一次,对象的这个键名就加一。最后根据需求遍历这个对象即可;
问题1
function test(arr){var length = arr.length;var json = {};for(var i = 0;i<length;i++){if(!json[arr[i]]){json[arr[i]] = 1;}else{json[arr[i]]++;}}var ans = new Array();for(var i in json){ans.push(i);}return ans;}问题2
function test(arr){var length = arr.length;var json = {};for(var i = 0;i<length;i++){if(!json[arr[i]]){json[arr[i]] = 1;}else{json[arr[i]]++;}}var ans = new Array();for(var i in json){if(json[i] == 1){ans.push(i);}}return ans;}问题3
function test(arr){var length = arr.length;var json = {};for(var i = 0;i<length;i++){if(!json[arr[i]]){json[arr[i]] = 1;}else{json[arr[i]]++;}}var ans = new Array();var max = 1;var maxIndex=0;for(var i in json){if(json[i]>max){max = json[i];maxIndex = i;}}return '出现最多的元素是'+maxIndex+'次数'+max;}
------------------------------我是分割线-----------------------------------------------------------------------------
问题1数组去重用ES6 set可以直接解决,参数为要去重的数组。由于map不予许有重复的值。
var set = new Set(arr);
具体:var arr = ['a','b','c','d','a','b'];var set = new Set(arr);var ans = [];set.forEach(function(value){ans.push(value);})console.log(ans);
参考阮一峰老师文章有一种跟简单的方法,一定要多看API!
function dedupe(array) { return Array.from(new Set(array));}dedupe([1, 1, 2, 3]) // [1, 2, 3]
Array.from可以将set转换成数组,因此原理是首先将数组转换成set,set内部会对比添加的两个属性是否相等,若相等则不会重复添加。然后再转换成数组。
阅读全文
0 0
- 数组去数组重
- 数组去重,json数组去重
- 数组去重
- 数组去重
- JS 数组去重
- 数组去重算法
- 数组去重
- js数组去重
- php 数组去重
- 数组去重
- 数组排序去重
- javascript数组去重
- json数组去重
- 数组去重
- php数组去重
- 数组如何去重
- iOS 数组去重
- 动态数组去重
- opencv 膨胀和腐蚀
- android dagger2使用全解
- 浅谈mysql的锁和索引之间莫大的联系
- 服务器IMM2实战介绍
- centos设置Apache开机启动
- 数组去重
- android 解决滑动冲突的外部拦截法
- linux zip命令
- HDU 2669Romantic(扩展欧几里德裸题)
- 文本操作(2)——sort
- lintcode-矩阵归零
- 微信公众号平台登陆-你已授权登陆过XXXX
- 执行Oracle中的函数wm_concat报错oracle wmsys.wm_concat ORA-00932: 数据类型不一致: 应为 -, 但却获得 CLOB
- 移动端不同尺寸下的适陪应