arr

js 数组一些高级操作

岁酱吖の 提交于 2019-12-02 05:21:34
引自: https://blog.csdn.net/Jacoh/article/details/88697855 转换方法 ​ 所有对象都具有 toLocaleString()、toString()和 valueOf()方法。 栈方法 array.push, array.pop 队列方法 ​ array.shift, array.push 重排方法 array.reverse, array.sort reverse()和 sort()方法的返回值是经过排序之后的数组。 操作方法 array.concat, array.slice 位置方法 array.indexOf, array.lastIndexOf 迭代方法 array.every, array.filter, array.forEach, array.map, array.some every(): 对数组中的每一项运行给定函数,如果该函数对每一项都返回 true,则返回 true。 filter(): 对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组。 forEach(): 对数组中的每一项运行给定函数。这个方法没有返回值。 map(): 对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。 some(): 对数组中的每一项运行给定函数,如果该函数对任一项返回 true,则返回 true

PHP基础教程之数组函数大全整理

删除回忆录丶 提交于 2019-12-02 02:44:56
今天整理了一份 PHP开发中数组操作大全,包含有数组操作的基本函数、数组的分段和填充、数组与栈、数组与列队、回调函数、排序、计算、其他的数组函数共8个知识点,非常适合正在 学习PHP 的初学者,欢迎收藏打包带走。 一、数组操作的基本函数 数组的键名和值 array_values($arr); 获得数组的值 array_keys($arr); 获得数组的键名 array_flip($arr); 数组中的值与键名互换(如果有重复前面的会被后面的覆盖) in_array("apple",$arr); 在数组中检索apple array_search("apple",$arr); 在数组中检索apple ,如果存在返回键名 array_key_exists("apple",$arr); 检索给定的键名是否存在数组中 isset($arr[apple]): 检索给定的键名是否存在数组中 数组的内部指针 current($arr); 返回数组中的当前单元 pos($arr); 返回数组中的当前单元 key($arr); 返回数组中当前单元的键名 prev($arr); 将数组中的内部指针倒回一位 next($arr); 将数组中的内部指针向前移动一位 end($arr); 将数组中的内部指针指向最后一个单元 reset($arr; 将数组中的内部指针指向第一个单元 each($arr);

JavaScript 实现 reduce() 方法函数

戏子无情 提交于 2019-12-02 01:39:52
更新:增加递归实现的方法 更新:重构非递归实现的方法 思路 与之前两篇文章( map()的实现 , filter()的实现 )中的迭代方法不一样,reduce() 是归并方法。 reduce 接收两个参数: 第一个参数是在每一项上调用的函数 该函数接收 4 个参数: 前一个值 prev 当前值 cur 项的索引 index 数组对象 array 第二个可选参数是作为归并基础的初始值 reduce 方法返回 一个最终的值 。 代码表示: arr.reduce(function(prev, cur, index, arr){}, initialValue) 归并 与之前的迭代不同,归并不是对每一项都执行目标函数,而是可以概括为如下两步: 不断地对数组的前两项“取出”,对其执行目标函数,计算得到的返回值 把上述返回值“填回”数组首部,作为新的 array[0] 持续循环执行这个过程,直到数组中每一项都访问了一次 返回最终结果 举例说明 对数组 [1,2,3] 归并执行 (prev, cur) => prev + cur ,流程如图: [1, 2, 3] // 取出 1 + 2 ,填回 3 [3, 3] // 取出 3 + 3 ,填回 6 [6] // 最终结果为 6 所以得到 6 。 实现 第一版 根据这个思路,得到第一版代码如下 // 第一版 Array.prototype

【JavaSE_学习笔记】泛型

醉酒当歌 提交于 2019-12-02 00:57:58
【JavaSE_学习笔记】泛型 泛型格式: <引用类型>:泛型只能放引用类型 泛型的好处:   1.可以把运行时出现的问题提前至编译时   2.避免了无谓的强制类型转换   3.解决了黄色警告线的问题 问题:以下哪些写法是正确的? ArrayList < String > list = new ArrayList < String > (); true ArrayList < Object > list = new ArrayList < String > (); false ArrayList < String > list = new ArrayList < Object > (); false // 为了新老系统的兼用性 ArrayList list = new ArrayList < String > (); true ArrayList < String > list = new ArrayList(); true 注意:   1.泛型中没有多态的概念,左右两边的数据类型必须一致,或是直写一边的泛型    推荐:两边都写同样数据类型的泛型   2.泛型中是不能使用基本数据类型数据的,如需使用则要使用基本数据类型对应的包装类型(如:int——->Integer) 自定义泛型: 自定义泛型:可以理解为一个数据类型的变量或是一个数据类型的占位符 方法自定义泛型:

排序--希尔排序

◇◆丶佛笑我妖孽 提交于 2019-12-02 00:24:59
图片转载于 https://www.cnblogs.com/chengxiao/p/6104371.html 1、什么是希尔排序? 希尔排序也是一种插入排序,他是第一个打破时间复杂度O(n^2)的排序方法,它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫 缩小增量排序 。 2、希尔排序的思想: 希尔排序是把元素按下标的一定增量进行分组,对每组使用直接插入排序算法排序; 随着增量逐渐减少,当增量减至 1 时 , 整个文件恰被分成一组,算法便终止 3、代码逐步实现: 排序的元素: int[] arr={8,9,1,7,2,3,5,4,6,0}; 3.1 交换法实现 //第一步 for (int i=5;i<arr.length;i++){ //i的初始值为初始增量 10/2=5,分为5组,每组两个元素 for (int j=i-5;j>=0;j-=5){ //j是距离i为5元素,那么,0和5一组,6和2一组,以此类推,每组比完之后,回退到上一组重新比较,具体用法看第二轮 if (arr[j+5]<arr[j]){ //比较大小,交换 temp=arr[j]; arr[j]=arr[j+5]; arr[j+5]=temp; } } } System.out.println(Arrays.toString(arr)); //第二次 for (int i=2;i<arr

算法笔记-分治法

一个人想着一个人 提交于 2019-12-02 00:02:11
分治法:将问题分割,从一个大块分解为一个个小块,将问题规模变小。先解决小问题,在不停的整合结果集。 (1)合并排序   思路:把数组(假如长度为8)中每一个元素分为一个数组(因为这个数组只有一个元素,所以可以看成是有序数组)。然后不停的把两个有序组数组成一个有序数组(两个数组谁的第一个小就array_shift谁)。过程图:   代码: 1 <?php 2 $arr = [42, 15, 20, 6, 8, 38, 50, 12]; 3 4 function sliceArr($arr) //切分 5 { 6 $arr = array_chunk($arr, 1); 7 while (count($arr) != 1) 8 $arr = array_chunk ($arr, 2); 9 return $arr; 10 } 11 12 function mergeArr($arr) 13 { 14 if (is_array($arr[0][0])) { 15 $arr = [mergeArr($arr[0]), mergeArr($arr[1])]; 16 } 17 $c = count($arr[0]) + count($arr[1]); 18 for ($i=0; $i<$c; $i++) { //把两个有序数组合并成一个有序 19 $ret[] = (empty($arr[1]

splice方法

僤鯓⒐⒋嵵緔 提交于 2019-12-01 23:30:52
splice方法 对原数组添加/删除,返回添加/删除的项目。 格式:splice( index , howmany ,item1, ..., itemX) 参数: index,删除/添加开始的位置。 howmany,删除元素的个数,0表示不删除。 item1, ..., itemX从index处开始插入的个数。 let arr = []; arr[1] = {name:"1",age:"1"}; arr[3] = {name:"3",age:"3"}; arr[5] = {name:"5",age:"3"}; console.log(arr) arr.splice(3,1) console.log(arr) 可见数组长度也随之减少。 来源: https://www.cnblogs.com/hzozj/p/11721267.html

JavaScript (六) js的基本语法 - - - Math 及 Date对象、String对象、Array对象

别等时光非礼了梦想. 提交于 2019-12-01 23:21:10
一、Math 1、Math对象的案例 var result= Math.max(10,20,30,40); console.log(result);//40 //例子:自己定义一个对象,实现系统的max的方法 function MyMath() { //添加了一个方法 this.getMax=function () { //所有数字中的最大值 var max=arguments[0]; for(var i=0;i<arguments.length;i++){ if(max<arguments[i]){ max=arguments[i]; } } return max; }; } //实例对象 var mt=new MyMath(); var result=mt.getMax(10,20,30,40,100,3); console.log(result);//100 2、Math 对象的案例: <style> div { width: 300px; height: 200px; background-color: pink; } </style> <script> //随机产生一个十六进制的颜色值 //封装成一个函数 console.log(parseInt(Math.random() * 5)); function getColor() { var str = "#"; /

js 数组去重(收藏)

社会主义新天地 提交于 2019-12-01 23:07:15
function unique (arr) { return Array.from(new Set(arr)) } var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}]; console.log(unique(arr)) function unique(arr){ for(var i=0; i<arr.length; i++){ for(var j=i+1; j<arr.length; j++){ if(arr[i]==arr[j]){ //第一个等同于第二个,splice方法删除第二个 arr.splice(j,1); j--; } } } return arr; } var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}]; console.log(unique(arr)) function unique(arr) { if (!Array.isArray(arr)) {

javase学习笔记------------数组

*爱你&永不变心* 提交于 2019-12-01 21:53:24
数组的定义:同一种类型数据的集合。其实数组就是一个容器。 数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。 格式1:元素类型[ ] 数组名 = new 元素类型 [元素个数或数组长度]; 示例:int[ ] arr =new int[5]; 格式2:元素类型[ ] 数组名 = new 元素类型[ ]{元素,元素,......}; 示例:int[ ] arr =new int[ ]{3,1,5,7}; int[ ] arr = {3,1,5,7}; 内存空间的划分: 1,寄存器: 2,本地方法区: 3,方法区: 4,栈内存:存储的都是局部变量。而且变量所属的作用域一旦结束,该变量就自动释放。 5,堆内存:存储的都是数组和对象(其实数组就是对象)。凡是new建立的都在堆中。 特点:1,每一个实体都有首地址。 2,堆内存中的每一个变量都有默认初始化值。根据类型的不同而不同,整数是0, 小数是0.0或者0.0f,boolean是false,char是'\u0000'。 3,垃圾回收机制。 数组常见问题: 1,当访问到数组中不存在的角标时,就会发生ArrayIndexOutOfBoundsException。 2,当引用型变量没有任何实体指向时,还在用其操作实体,就会发生NullPointerException。 3,当按格式1定义好一个数组