- 数组中默认是可以
存储重复数据- 实际项目中,数组中
不能存储重复数据,需要去除数组中重复的数据- 实际项目中,
推荐使用使用set数据类型方法
var arr = [1,2,3,1,2,3,4,1,2,3,4,5,1,2,3,4,5,6,1,2,3,4,5,6,7];console.log( arr );
// 实际项目中 使用的数组去重代码var newArr = [...new Set(arr)];console.log( newArr );
- 创建一个新的
空数组- 将原始数组数据写入
新数组中,写入时执行判断- 要写入的数据新数组中
没有,再执行写入操作
var arr = [1,2,3,1,2,3,4,1,2,3,4,5,1,2,3,4,5,6,1,2,3,4,5,6,7];
// 创建一个空数组 存储数据var newArr = [];
for (var i = 0; i <= arr.length - 1; i++) {// console.log( i, arr[i] );
// 当查询结果是-1时 将值写入新数组newArrif (newArr.indexOf(arr[i]) === -1) {// 如果查询结果是-1 证明新数组中没有要写入的数据 arr[i] // 执行末位新增数据操作newArr.push(arr[i]);}}console.log(newArr);
var arr = [1,2,3,1,2,3,4,1,2,3,4,5,1,2,3,4,5,6,1,2,3,4,5,6,7];
// 创建一个空数组 存储数据var newArr = [] ;
// forEach循环arr.forEach( function(item){
// item存储的是原始数组中数据单元存储的数据数值// console.log( item );
// 判断原始数组数据item 不在新数组中 执行写入操作if( newArr.indexOf( item ) === -1 ) newArr.push( item );})console.log( newArr );
var arr = [1, 1, 2, 2, 3, 3, 4, 5, 6, 7, 7, 7, 7];for( var i = 0 ; i < arr.length; i++){if(arr.indexOf(arr[i], i+1) !== -1){arr.splice(i, 1)i--;}}console.log(arr);
- 将数组使用
sort( )方法进行排序,排序后相同的数值会相邻排序循环遍历数组:如果当前单元存储的数值和下一个单元存储的数值相同,删除数组的下一个单元
// 原始数组var arr = [1,2,3,1,2,3,4,1,2,3,4,5,1,2,3,4,5,6,1,2,3,4,5,6,7];
// 利用sort对原始数组进行排序arr.sort( function(a , b){ return a-b });
// 使用for循环遍历数组for( var i = 0 ; i < arr.length ; i++ ){
// 当前单元和下一个单元相同时if( arr[i] === arr[i+1] ){
// 从下一个单元i+1开始 删除 1 个arr.splice( i+1 , 1 );
// 消除数组坍塌的影响
i--;}}console.log( arr );
- 将数组中数据单元存储数据是
第一次出现的数据- 通过
filter过滤,写入到新数组中数组.indexOf( 数据 ),执行结果返回值是输入的数据,第一次出现位置的索引下标
var arr = [ 1,2,3,1,2,3,4,1,2,3,4,5,1,2,3,4,5,6,1,2,3,4,5,6,7 ];
// 通过filter过滤函数完成操作var newArr = arr.filter( function(item , index){/* 通过arr.indexOf(item)查询当前item数值,第一次出现位置的索引下标如果当前单元的索引下标index和 查询的第一次出现位置的索引下标 相同 item 就是第一次出现的数据 通过return返回到新数组中*/
var res = arr.indexOf( item );console.log( ` 当前数据是${item},索引下标是${index},数值第一次出现的索引下标是${res}` );return arr.indexOf( item ) === index ;})
console.log( newArr );
var arr = [ 1,2,3,1,2,3,4,1,2,3,4,5,1,2,3,4,5,6,1,2,3,4,5,6,7 ];
// 外层是第一个至倒数第二个单元for( var i = 0 ; i <= arr.length-1-1 ; i++ ){
// 内层是外层起始的下一个至最后一个for( var j = i+1 ; j <= arr.length-1 ; j++ ){
// 如果两个数值arr[i]和arr[j]相同 // 删除内层循环对应的单元,即j索引下标对应的单元if( arr[i] === arr[j] ){// 从内层索引下标j对应的数值单元开始删除1个单元arr.splice( j , 1 );
// 删除数组坍塌影响j-- ;}}}
console.log( arr );
上一篇:表达世事艰难的诗句有那些啊
下一篇:虎扑jr是什么意思