JS中几种常见的数组算法(前端面试必看)
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中几种常见的数组算法(前端面试必看)的更多相关文章
- JS中几种常见的高阶函数
高阶函数:英文叫Higher-order function.JavaScript的函数其实都指向某个变量.既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数 ...
- js中几种常见的方法的实例 shift,unshift,push,prop
1.shift()定义和用法 shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值. 语法:arrayObject.shift() 返回值:数组原来的第一个元素的值. 说明:如果 ...
- js中几种常用的数组处理方法的总结
一.filter()用法 功能:用于筛选数组中满足条件的元素,返回一个筛选后的新数组. <script> $(function(){ var arr = [1,-2,3,4,-5]; va ...
- 自然语言处理的CNN模型中几种常见的池化方法
自然语言处理的CNN模型中几种常见的池化方法 本文是在[1]的基础上进行的二次归纳. 0x00 池化(pooling)的作用 首先,回顾一下NLP中基本的CNN模型的卷积和池化的大致原理[2].f ...
- java几种常见的排序算法总结
/*************几种常见的排序算法总结***************************/ package paixu; public class PaiXu { final int ...
- 七种常见经典排序算法总结(C++实现)
排序算法是非常常见也非常基础的算法,以至于大部分情况下它们都被集成到了语言的辅助库中.排序算法虽然已经可以很方便的使用,但是理解排序算法可以帮助我们找到解题的方向. 1. 冒泡排序 (Bubble S ...
- 【JS中循环嵌套常见的六大经典例题+六大图形题,你知道哪几个?】
首先,了解一下循环嵌套的特点:外层循环转一次,内层循环转一圈. 在上一篇随笔中详细介绍了JS中的分支结构和循环结构,我们来简单的回顾一下For循环结构: 1.for循环有三个表达式,分别为: ①定义循 ...
- js中如何访问对象和数组
js中如何访问对象和数组 一.总结 一句话总结:js访问对象点和中括号,访问数组的话就是中括号 对象 . [] 数组 [] 1.js访问对象的两种方式? . [] 可以使用下面两种方式访问对象的属性和 ...
- java讲讲几种常见的排序算法(二)
java讲讲几种常见的排序算法(二) 目录 java讲讲几种常见的排序算法(一) java讲讲几种常见的排序算法(二) 堆排序 思路:构建一个小顶堆,小顶堆就是棵二叉树,他的左右孩子均大于他的根节点( ...
随机推荐
- spring整合axis2(最小配置化)的示例
参考文档: http://blog.csdn.net/xinhaoluan/article/details/3605234 环境配置: spring-framework-3.2.7 axis2-1.6 ...
- 【Python3之多线程】
一.threading模块 multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性. 1.开启线程的两种方式(同Process) 方法一 from thr ...
- Mac之OS系统下搭建JavaEE环境 <四> 之IntelliJ IDEA 的内存优化
1.代开IntelliJ IDEA 的显示内容 2. 打开idea.vmoptions文件 路径为Contens——bin——idea.vmoptions 修改之前会复制一份备份原配置 原配置 修改后 ...
- 详解连接SQL Server数据库的方法,并使用Statement接口实现对数据库的增删改操作
总结一下,连接SQL Server数据库需要以下几个步骤: 1. 导入驱动Jar包:sqljdbc.jar 2. 加载并注册驱动程序 3. 设置连接路径 4. 加载并注册驱动 5. 连接数据库 6. ...
- CJOJ 2484 函数最小值 / Luogu 2085 函数最小值(STL优先队列,堆)
CJOJ 2484 函数最小值 / Luogu 2085 函数最小值(STL优先队列,堆) Description 有n个函数,分别为F1,F2,...,Fn.定义 \(Fi(x)=Aix^2+Bix ...
- nopCommerce 3.9 大波浪系列 之 事件机制(生产者、消费者)
一.nop事件机制简介 应用场景:客户支付成功后,需要发送短信.邮件告知客户订单支付成功(短信.邮件由不同模块实现) 实现方法: 1.定义支付成功OrderPaidEvent事件. 2.定义短信,邮箱 ...
- (转)Memcached 在windows下的java使用
Memcached 在windows下的java使用 研究这个东东主要是为了解决在教务管理中选课系统的大并发情况下数据库频繁读写造成速度慢的问题,但要使用WEB服务器的内存,是不是可靠还需要验证, ...
- Oracle和MySQL分组查询GROUP BY
Oracle和MySQL分组查询GROUP BY 真题1.Oracle和MySQL中的分组(GROUP BY)有什么区别? 答案:Oracle对于GROUP BY是严格的,所有要SELECT出来的字段 ...
- 64位系统下8G内存仅使用到4G问题的解决方法
笔记本:联想E46G 当前bios版本:25CN32WW 内存:DDR3 133 4G × 2 问题:bios信息显示8G,win7和ubuntu 在64位下使用情况仅4G 准备工作1:bios版本和 ...
- drbd.9.0版本部署
DRBD9.0部署 1) drbd软件安装 软件:drbd-9.0.0.tar.gz . drbd-utils-8.9.5.tar.gz(从8.4.5开始,drbd软件分成了两部分:核心模块和管理工具 ...