数组去重的5种方法
发布时间:2025-05-23 07:20:55 发布人:远客网络
一、数组去重的5种方法
原理两两比较如果相等的话就删除第二个
先让第一个1即arr[0]与后面的一个个比较如果后面的值等于arr[0]删除后面的值
第一次结束后的结果是 1 3 2 2 4删除了后面所有的1
同理第二次第三会删除与自己相同的元素
for(var i=0; i<arr.length; i++){
//第二层for用于控制与第一层比较的元素
for(var j=i+1; j<arr.length; j++){
//删除后面的即第 j个位置上的元素删除个数 1个
// j--很关键的一步如果删除程序就会出错
//j--的原因是每次使用splice删除元素时返回的是一个新的数组
//这意味这数组下次遍历是比较市跳过了一个元素
例如:第一次删除后返回的是 1 1 3 2 1 2 4
*但是第二次遍历是 j的值为2 arr[2]= 3
//先排序让大概相同的在一个位置,这里为什么说是大概相同是因为sort排序是把元素当字符串排序的它和可能排成 1 1 10 11 2 20 3...不是我们想要的从小到大
for(var i= 0; i< arr.length-1;i++){
原理:用一个空数组去存首次出现的元素
利用 indexOf属性 indexOf是返回某个指定的字符在字符串中出现的位置,如果没有就会返回-1
因此我们可以很好的利用这个属性当返回的是-1时就让其存入数组
for(var i= 0; i< arr.length; i++){
if(newArr.indexOf(arr[i])==-1){
原理:利用对象的思想,如果对象里没有这个属性的话就会返回undefined
利用这个原理当返回的是undefined时让其放入数组然后在给这个属性赋值
for(var i= 0; i< arr.length; i++){
原理:循环比较如果相等的让后面的元素值为0,最后在输出的时候删除为0的这个前提是你的数据里不能有0,但是凡事可以变通你可以设置任何值替代这个0,这个方法是我当时想到实现的所以没有进行很好的优化。
for(var i=0; i<arr.length-1;i++){
for(j=i+1;j<arr.length;j++){
以上就是数组去重的5种方法有哪些?的详细内容,更多请关注php中文网其它相关文章!
二、php二维数组处理,并重置索引。。
直接用 array_flip或者 array_unique是不行的,你这没有键名,必须要自己写函数
functionunique_arr($array2D,$stkeep=false,$ndformat=true)
//判断是否保留一级数组键(一级数组键可以为非数字)
if($stkeep)$stArr=array_keys($array2D);
//判断是否保留二级数组键(所有二级数组键必须相同)
if($ndformat)$ndArr=array_keys(end($array2D));
//降维,也可以用implode,将一维数组转换为用逗号连接的字符串
//去掉重复的字符串,也就是重复的一维数组
foreach($tempArras$ndkey=>$ndval)$output[$k][$ndArr[$ndkey]]=$ndval;
else$output[$k]=explode(",",$v);
var_dump(array_values(unique_arr($arr)));
去重函数可参考:
去重函数可参考:
三、linux去重命令
1、在命令行中输入: shutdown-r now:表示现在重启计算机,按下回车便会进行重启。
2、另一种重启方式就是输入: reboot也表示重启,一样会进行重启。
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。