JS如何在不给新空间的情况下给数组去重?
2024-09-30 16:49:34
1、先排序,在让相邻元素对比去重
const nums = [3, 1, 1, 5, 2, 3, 4, 3, 5, 5, 6, 4, 6, 6, 6];
Array.prototype.arrayNorepeat = function () {
let arr = this;
let len = arr.length - 1;
let i = 0;
//先给数组排序
for (; i < len; ++i) {
let j = 0;
for (; j < len - i; ++j) {
if (arr[j] > arr[j + 1]) {
arr[j] = arr[j] + arr[j + 1];
arr[j + 1] = arr[j] - arr[j + 1];
arr[j] = arr[j] - arr[j + 1];
}
}
}
//对数组进行去重
for (i = 0; i < arr.length; ++i) {
if (arr[i] === arr[i + 1]) {
arr.splice(i, 1);
//一旦相邻两个元素相等,外层循环的初始值从0开始
i = -1;
}
}
return arr;
}
console.log(nums.arrayNorepeat());
2、直接去重(排序方式是按照初始的排序方式)
const nums = [3, 1, 1, 5, 2, 3, 4, 3, 5, 5, 6, 4, 6, 6, 6];
Array.prototype.arrayNorepeat = function () {
let arr = this;
let i = 0;
for (; i < arr.length; ++i) {
let j = 0;
for (; j < arr.length; ++j) {
if (i != j) {
if (arr[i] === arr[j]) {
//如果你想保留最后一个重复的数字,把splice方法的j改成i就可以了
arr.splice(j, 1);
//一旦相邻两个元素相等,外层循环的初始值从0开始
i = -1;
}
}
}
}
return arr;
}
console.log(nums.arrayNorepeat());
最新文章
- Constraint5:unique 约束和null
- 正则表达式测试器 beta_
- 【BZOJ 1051】【HAOI 2006】受欢迎的牛
- RESTful的理解
- Greenplum各种Tips(不定时更新)
- Linux date命令的用法
- BZOJ3238 [Ahoi2013]差异
- unity3d引擎程序员养成
- 校友信息管理系统&;SNS互动平台之用户需求及概要设计
- InstallShield12豪华版破解版下载|InstallShield下载|软件打包工具
- 数据结构读书笔记(二)(C语言)
- HDU2093--考试排名
- 照着例子学习 protobuf-lua
- 0517JS综合练习、挂事件练习
- linux windows 传输文件
- java调用ws服务
- C++学习(二十一)(C语言部分)之 函数2
- redis的5种类型和所用命令
- vue实现短信验证码登录
- SOCKET简单爬虫实现代码和使用方法