JS中几种常见的数组算法

1.将稀疏数组变成不稀疏数组

/**
* 稀疏数组 变为 不稀疏数组
* @params array arr 稀疏数组
* @return array 不稀疏的数组
*/
function noSparse(arr) {
var resArr = []; //创建空数组
for (var i = 0; i < arr.length; i ++) {
if (arr[i] !== undefined) {
resArr.push(arr[i])
}
}
return resArr;
} var arr_demo1 = [1,2,,,,,3,4,,'a',['A','B','C'],,'M'];
console.log( arr_demo1.noSparse( arr_demo1 ) );

2.判断一个元素在不在元素里面

/**
* 判断一个元素在不在一个数组里面
* @params array arr 数组
* @params fixed 其他参数
* @params int type 1是=== 其他值表示只要 ==
* @return
*/
function inArray(arr, ele ,type ){ for( var i = 0; i < arr.length ; i++ ){
if( type === 1 ){
if( arr[i] === ele ){
return true;
} } else {
if( arr[i] == ele ){
return true;
}
}
} return false;
} // 验证
var arr1 = [1,3,11,5,7,9];
// console.log( inArray( arr1, 11) );
// console.log( inArray( arr1 , "11", 1) );
// console.log( inArray( arr1 , 11, 1) );

3.数组去重

方法一(用到上面 inArray函数)
/**
* 数组去重
* @params array arr 需要操作的数组
* @return array resArr 返回去重后的新数组
*/ function noRepeat( arr ){
var resArr = []; for( var j = 0; j < arr.length; j++ ){
if( !inArray( resArr, arr[j],1 ) ){
resArr.push( arr[j] );
}
}
return resArr; } var arr2 = [1,1,3,2,2,4,4,1,5];
console.log( noRepeat( arr2 ) );
方法二
/**removeRepeat() 消除数组中的重复元素
* @param arr 传入的数组作为参数
*/ function removeRepeat( arr ){ // 先用一层for循环来遍历第一个比较数
for( var i = 0; i < arr.length ; i++ ){ // 再用一层for循环来遍历第二个比较数
for( j = i+1; j < arr.length ; j++ ){
if( arr[i] == arr[j] ){
arr.splice( j,1 );
j--; //当删除重复项之后 后面的数组元素会顶上来 所以设置 j-- 保证每一项都被循环遍历
}
}
} return arr;
} // 验证
var arr_demo1 = [1,3,1,1,2,3,2,4,5,5,4,4,4,4,6];
removeRepeat( arr_demo1 );
console.log( arr_demo1 );

4.遍历二维数组

	/**遍历二维数组 twoDimension()
* @param arr数组参数
*/
function twoDimension( arr ){
// 第一层for循环遍历第一维度数组
for( var i = 0; i < arr.length ; i++ ){ // 第二层for循环遍历第二维度数组
for( var j = 0; j < arr[i].length ; j++ ){
document.write(arr[i][j]+"被遍历了!" +"<br>");
}
}
} // 验证
var arr_demo3 = [ ["a","b","c","d"] , ["e","f","g"] , ["h","i"],["j","k"] ];
twoDimension( arr_demo3 );

5.取得二维数组中数组元素长度最长的数组

/**取得二维数组中数组元素长度最长的元素maxLength()
* @param arr数组参数
*/
function maxLength( arr ){
var i = 0;
for( var j = 1 ; j < arr.length ; j++ ){
if( arr[i].length < arr[j].length ){
i = j;
}
}
return i;
} // 验证
var arr_demo4 = [ ["a","b","c","d"] , ["e","f","g",1,2,3,4,5,6] , ["h","i"],["j","k"] ];
console.log( maxLength( arr_demo4 ) );
console.log( arr_demo4[ maxLength(arr_demo4) ].length );

6.取得数组中数值最大的元素

/**max()取得数组中值最大的元素
* @param arr 传入任意数组
*/
function max( arr ){
var i = 0 ; // 用for循环遍历 比较
for( var j = 1 ; j < arr.length ; j++ ){
if( arr[j] > arr[i] ){
i = j;
}
} return arr[i]; } // 验证
var arr_demo2 = [10,8,50,28,51,5];
max( arr_demo2 );
console.log( max( arr_demo2 ) ); //51

JS中几种常见的数组算法(前端面试必看)的更多相关文章

  1. JS中几种常见的高阶函数

    高阶函数:英文叫Higher-order function.JavaScript的函数其实都指向某个变量.既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数 ...

  2. js中几种常见的方法的实例 shift,unshift,push,prop

    1.shift()定义和用法 shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值. 语法:arrayObject.shift() 返回值:数组原来的第一个元素的值. 说明:如果 ...

  3. js中几种常用的数组处理方法的总结

    一.filter()用法 功能:用于筛选数组中满足条件的元素,返回一个筛选后的新数组. <script> $(function(){ var arr = [1,-2,3,4,-5]; va ...

  4. 自然语言处理的CNN模型中几种常见的池化方法

    自然语言处理的CNN模型中几种常见的池化方法 本文是在[1]的基础上进行的二次归纳. 0x00 池化(pooling)的作用   首先,回顾一下NLP中基本的CNN模型的卷积和池化的大致原理[2].f ...

  5. java几种常见的排序算法总结

    /*************几种常见的排序算法总结***************************/ package paixu; public class PaiXu { final int  ...

  6. 七种常见经典排序算法总结(C++实现)

    排序算法是非常常见也非常基础的算法,以至于大部分情况下它们都被集成到了语言的辅助库中.排序算法虽然已经可以很方便的使用,但是理解排序算法可以帮助我们找到解题的方向. 1. 冒泡排序 (Bubble S ...

  7. 【JS中循环嵌套常见的六大经典例题+六大图形题,你知道哪几个?】

    首先,了解一下循环嵌套的特点:外层循环转一次,内层循环转一圈. 在上一篇随笔中详细介绍了JS中的分支结构和循环结构,我们来简单的回顾一下For循环结构: 1.for循环有三个表达式,分别为: ①定义循 ...

  8. js中如何访问对象和数组

    js中如何访问对象和数组 一.总结 一句话总结:js访问对象点和中括号,访问数组的话就是中括号 对象 . [] 数组 [] 1.js访问对象的两种方式? . [] 可以使用下面两种方式访问对象的属性和 ...

  9. java讲讲几种常见的排序算法(二)

    java讲讲几种常见的排序算法(二) 目录 java讲讲几种常见的排序算法(一) java讲讲几种常见的排序算法(二) 堆排序 思路:构建一个小顶堆,小顶堆就是棵二叉树,他的左右孩子均大于他的根节点( ...

随机推荐

  1. [图形学] Chp8.4 OpenGL 二维观察函数——视口

    这节有几个显示窗口的控制函数,可以调整视口,创建子窗口,最小化为图标,设置图标名称,隐藏显示等. gluOrtho2D (xwmin, xwmax, ywmin, ywmax); // 定义二维裁剪窗 ...

  2. (转载)Jython 简单入门

    转载链接:http://willzh.iteye.com/blog/307222 1. 用Jython调用Java类库 第一步.创建Java类 写一个简单的Java类,用Point来示例: impor ...

  3. c# 中事务处理

    1.在c#中,使用以下语句,就可以不用再数据库中进行事务语句处理了. TransactionOptions transactionOption = new TransactionOptions() ; ...

  4. SQL 中 decode()函数

    文本转自 FreeSpider的微博 今天看别人的SQL时看这里面还有decode()函数,以前从来没接触到,上网查了一下,还挺好用的一个函数,写下来希望对朋友们有帮助哈! decode()函数简介: ...

  5. [Oracle]高水位标记(HWM)

    (一)高水位标记(High Water Mark,HWM)的概念 所谓高水位标记,是指一个已经分配的段中,已经使用的空间与未使用的空间的分界线.在表的使用过程中,随着数据的不断增多(insert),H ...

  6. windows下安装DB2数据库以及使用Aqua Data Studio链接数据库

    本文只是作为自己的心得体会,不具有一般性! 1.其实安装DB2数据库还是比较简单的,一般都是直接下一步下一步就可以了,只是有些地方需要注意.我安装的DB2数据库版本如下图所示: 2.拿到数据库的版本之 ...

  7. solr6.3 + Hbase Indexer使用MR创建索引,错误Bad return type

    使用solr6.3 + Hbase Indexer ,通过Hbase-indexer从Hbase建立索引到solr中,进行全文搜索. 两种实现方式:① 开启hbase-indexer进行实时同步新数据 ...

  8. 禅道SQA

    背景 近期以项目质量和测试管理的角色介入了一个大型的项目中间,项目的业务测试方面重点在节点把控和风险跟进. 以往进行测试进度展示是通过bug解决进度及整体走势图来进行体现,这块手工作图太过麻烦,干脆整 ...

  9. ui-router ^1.x在ng1中使用state events

    官网信息:https://ui-router.github.io/ng1/docs/latest/modules/ng1_state_events.html Legacy state events P ...

  10. 【TOP】top命令的load average的意义

    一. 怎么查看机器负载 uptime 命令: $uptime 14:32:32 up 108 days, 23:04, 17 users,  load average: 0.06, 0.08, 0.0 ...