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. JS数组例子

    输入10个成绩,求总和,最高和最低 var arr=new Array(97,56,67,56,77,78,67,76,89,98); var sum=0; var minx=100; var max ...

  2. Html5元素布局

    本教程十分简单,适合新手(因为我也是新手).本教程参考了"菜鸟教程". 笔者希望做到元素相对于浏览器的角落布局,即九个典型位置: 这个理念其实和UE4中的UMG锚定一样.Html5 ...

  3. mysql数据库定时备份

    最近要用到mysql备份,就写了shell脚本用于备份. #!/bin/bash #定义备份的数据库名称 database=*** #定义备份的时间 currTime=$(date +%Y%m%d) ...

  4. 深入浅析JavaScript中的constructor

    constructor 属性返回对创建此对象的数组函数的引用.本文给大家介绍JavaScript中的constructor ,需要的朋友参考下吧 定义和用法 constructor 属性返回对创建此对 ...

  5. MongoDB数据库聚合

    前面的话 聚合操作主要用于对数据的批量处理,将记录按条件分组以后,然后再进行一系列操作,例如,求最大值.最小值.平均值,求和等操作.聚合操作还能够对记录进行复杂的操作,主要用于数理统计和数据挖掘.在 ...

  6. 针对Oracle数据库中SCOTT方案的多表查询一个例子

    查询出每个员工的姓名.职位.月薪.所属部门名.月薪等级及其领导的姓名.职位.所属部门名.月薪等级.select e.ename 员工姓名,e.job 员工职位,e.sal 员工月薪,d.dname 员 ...

  7. 解决IE8下不支持document.getElementsByClassName的方法

    在代码前面加如下代码: if (!document.getElementsByClassName) { document.getElementsByClassName = function (clas ...

  8. 配置HTTPS服务

    环境为CentOS 7.3.httpd2.4.6 一 搭建证书 说明: CA 主机为192.168.29.3 client主机为 192.168.29.100 1 生成私钥 [root@centos7 ...

  9. HDU1027 Ignatius and the Princess II

    Problem Description Now our hero finds the door to the BEelzebub feng5166. He opens the door and fin ...

  10. JavaBean和jsp的开发模型

    1.实体类 package com.zdsofe.javaBean.work; public class Student { public String name; public String sex ...