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. vijos1101题解

    题目: 研究表明,这种传染病的传播具有两种很特殊的性质: 第一是它的传播途径是树型的,一个人X只可能被某个特定的人Y感染,只要Y不 得病,或者是XY之间的传播途径被切断,则X就不会得病. 第二是,这种 ...

  2. opencv如何实现【不用全局变量进行滚动条控制】

    opencv中自带滚动条,其中一个问题是该回调函数(on_trackbar)大多使用的是全局变量,大型项目调试时弊端众多,比如下图: 为此,留意了void on_Trackbar(int par1, ...

  3. gulp使用流程

    1.全局安装gulp $ npm install --global gulp 2.作为项目的开发依赖(devDependencies)安装 $ npm install --save-dev gulp ...

  4. Hibernate的一个简单应用例子

    Hibernate是一个开源的ORM框架,顾名思义,它的核心思想即ORM(Object Relational Mapping,对象关系映射),可以通过对象来操作数据库中的信息,据说开发者一开始是不太熟 ...

  5. 《javascript 高级程序设计》笔记

    1-4章 1.变量①.ECMAScript 变量是松散类型的,也就是说可以用来保存任何类型的数据.换句话说每个变量仅仅是一个用于保存值的占位符.②.如果在函数中使用var定义一个变量,那么这个变量在函 ...

  6. python-web.py 入门介绍

    内容来源:webpy.org 介绍: 1.python中web.py 是一个轻量级Python web框架,它简单而且功能强大.web.py是一个开源项目. 2.安装很简单:pip install w ...

  7. LCS 51Nod 1134 最长递增子序列

    给出长度为N的数组,找出这个数组的最长递增子序列.(递增子序列是指,子序列的元素是递增的) 例如:5 1 6 8 2 4 5 10,最长递增子序列是1 2 4 5 10.   Input 第1行:1个 ...

  8. vue2中component父子组件传递数据props的使用

    子组件使用父亲传过来的数据,我们需要通过子组件的 props 选项. 组件实例的作用域是孤立的,不能在子组件的模板内直接引用父组件的数据.修改父亲传过来的props数据的时候 父亲必须传递对象,否则不 ...

  9. iOS开发实战-上架AppStore 通过内购和广告获得收益

    写在前面 由于一些原因需要离职,准备重回大上海 忽然发现手头上也没什么独立App,那就随便写个放到AppStore上吧,凑个数吧.哈哈哈. 这个App是无聊找配色的时候看到的一套图 正好春节在家没什么 ...

  10. 第一个asp.net实例——生日邀请以及回函

    22回校后,看了论文游了西湖,今天开始接触asp.net,从图书馆选了两本书:<精通ASP.NET 4.5 (第五版)>,<ASP.NET全能速查手册>.一本练手细看,一本翻查 ...