Array的个人总结

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<title>Document</title>
</head>

<body>
<script>
// 检测
// Array.isArray(paraDetermine)
// 参数必须,返回bool
console.log(Array.isArray(‘ty‘));
console.log("h"
instanceof Array);
// arr instanceof Array
// 操作符,在一个网页框架中可以使用
/**
*
*/
// para.toString()
// 这里是数组,说下数组的情况
// [a,b,c]
// 返回值是 a.toString(),b.toString(),c.toString()
// 每项执行方法会返回的字符串以,的形式拼接
// toLocaleString(),valueOf()也是同样的道理
var person1 = {
toString: function() {
return "nike";
},
toLocaleString: function() {
return "like";
}

}

var person2 = {
toString: function() {
return "nike2";
},
toLocaleString: function() {
return "like2";
}

}
var people = [person1, person2, null, , , 1];
console.log(people)
console.log(people.valueOf())
console.log(people.toString())
console.log(people.toLocaleString())
console.log(people.join())

// 在说说 arr.join([spliter])
// 参数可选,返回值是 item.toString() 之后以参数spliter为分隔符 连接字符串,默认是逗号
// 自然item 如果是null,undefined,将会返回"",空字符串
/**
*
*/
// 栈方法:往瓶子里塞饼干
// arr.push([addVal1,addVal2..........])
// 参数可选,在原数组后面添加数据,返回修改后的长度
// arr.pop()
// 在原数组后面删除数据,返回删除的元素,也就是最后一个元素
var colors = [1];
console.log(colors.push())
console.log(colors)
console.log(colors.push(2, [1, 2], null, undefined, {}))
console.log(colors)

console.log(colors.pop())
console.log(colors);
/**
*
*/
// 队列方法:排队拿东西
// arr.unshift([addVal1,addVal2..........])
// 参数可选,在原数组前面添加数据,返回修改后的长度
// arr.shift()
// 在原数组前面删除数据,返回删除的元素,也就是第一个元素
// var colors = [1];
console.log(colors.unshift())
console.log(colors)
console.log(colors.unshift(2, [1, 2], null, undefined, {}))
console.log(colors)

console.log(colors.shift())
console.log(colors);
/**
*
*/
// 重排序方法
// arr.reverse()
// 无参数,返回值是原数组的每项倒序排列
// arr.sort([orderFn])
// 默认是 item.toString之后, 在按照字符串的从小到大排列,返回排序后的原数组
// 可选参数是 排序函数
// 从小到大按数字大小排列
var arrNum = [12,34,21,5413,34,54321,2];
var up = function (a,b) {
if(a<b){return a-b}
// 返回值为负数,数组的两项交换位置
// 这里用的是 冒泡法
// 首先 传入12,34 返回负数则不交换顺序
// 然后 传入34,21 返回正数则交换顺序
// 再 传入34,5431 自动脑补接下来的事
// 也就是第一个冒泡之后排序:arr.length-1次
// 第二次arr.length-2
// 设arr.length = n
// sum = n-1+n-2+n-3+n-4.............+1
// sum = 1 +2 +3 +4.....+n-3+n-2+n-1
// 2sum = n*(n-1)
// sum = n*(n-1)/2

}
console.log(arrNum.sort(up));

// 想要数组随机排序
var ruffle = function (a,b) {
return Math.random()-0.5;
// 不一定非得0.5,0~1之间就行
// 再演绎一遍
// 第一次:12,34, 返回谁知道是啥,正负不一定,可能调用顺序可能不
// 第二次:34,21 也有可能是12,21 , 返回谁知道是啥,正负不一定,可能调用顺序可能不
// 在sum = n*(n-1)/2之后,呵呵
// 要不要玩玩排列组合呀,(n-1)*(n-2)*(n-3)*......*2*1 恩随机排序
//
}
console.log(arrNum.sort(ruffle))
console.log(arrNum.sort(ruffle))
console.log(arrNum.sort(ruffle))
/**
*
*/
// 操作方法
// arr.concat([addVal1,addVal2,....])
// 默认是复制数组,并返回复制的数组
// 参数,是数组的话,则会把每项添加到结果数组中 ,如果传递的不是数组则会简单的添加结果,返回结果数组
// 显然不改变原数组
var animals = [‘cat‘,‘dog‘,‘duck‘];
var flowers = [‘biahe‘,‘mudan‘];
console.log(animals.concat())
console.log(animals.concat(flowers))
console.log(animals.concat(flowers,1,2,‘dfdsa‘,{}))
// arr.slice([startIndex][,endIndex]);
// 默认,是复制数组,并返回复制的数组
// 传一个参数,复制数组,返回筛选的从该参数的位置到数组末尾的所有项
// 传两个个参数,复制数组,返回从该第一个参数的位置到第二个参数位置的所有项组成但不包括结束位置的项的新数组
// 若参数是负数,则将转换为 负数+arr.length ,也就是最后一项的索引就是 -1 = arr.length-1
// 第一个参数小于0则= 0
// 第二个参数或转化之后的值 小于第一个参数则返回空数组
// 改变原数组
console.log(animals.slice())
console.log(animals.slice(1))
console.log(animals.slice(1,2))
console.log(animals.slice(1,-1))
console.log(animals.slice(-2,-1))
console.log(animals.slice(-22,-1))
console.log(animals.slice(0,-22))
// arr.splice([startDelIndex][,delNum][,addVal1,addVal2,....])
// 默认返回空数组
// 只传第一个参数n,原数组将只剩n个项,删除arr.length-n个项,返回的新数组将有arr.length-n个项
var arr2 = [0,1,2,3,4,5]
console.log(arr2.splice(2))
console.log(arr2)

// 传两个参数,n,m 表示要删除的的开始项和删除几个
var arr3 = [0,1,2,3,4,5]
console.log(arr3.splice(1,2))
console.log(arr3)

// 传三个参数 表示开始删除的位置删除几个元素,在加入几个元素,有点像替换
var arr4 = [0,1,2,3,4,5]
console.log(arr4.splice(1,2,‘a‘,‘b‘))
console.log(arr4)

/**
*
*/
// 位置方法
// arr.indexOf([item])
// 一般用来找某项是否在arr中
// 不填的话默认是找 undefinded或者是不填的项
// 参数有就是找参数的索引 有返回相应的索引 没有返回-1
// arr.lastIndexOf([item])
// 从数组的最后一项开始找,不赘述
var arr5 = ["i","dd",{d:3},undefined,"",,null];
console.log(arr5.indexOf())
console.log(arr5.indexOf("{d:3}")) // 这个不灵
console.log(arr5.lastIndexOf(null))

/**
*
*/
// 迭代方法: 线性结构的按顺序循环 或者数学里面每次循环更接近结果,遍历一般是指树形结构
// arr.every(fn[,thisArg]),arr.some(fn[,thisArg]),arr.filter(fn[,thisArg]),arr.forEach(fn[,thisArg]),arr.map(fn[,thisArg]),
// 每个方法接受两个参数,如上,表示要在数组每项上运行的函数和运行该函数的作用域对象-变相的指定了this的值
// fn可以接受三个参数,curItem,index,array 正在执行函数的当前项,当前项的索引,当前的这个数组
// 根据使用方法的不同,每项执行函数后的返回值可能影响也可能不影响 方法所返回的值,比如每项执行之后都返回true,那么最终的返回值不一定是true
// every对数组的每项运行给定函数,每项都返回true,才会返回true
// some对数组的每项运行给定函数,某一个返回true,返回true
// forEach对数组的每项运行给定函数,无返回值
// map对数组的每项运行给定函数,返回值是 每项的返回值组成的新数组
// filter对数组的每项运行给定函数 返回值是 每项返回值为true组成的数组
// 原数组均不改变
var numbers = [1,2,3,4,5,10];
var sum = 0;
console.log(numbers.every(function(curItem){
curItem+=1;
return curItem>4;
}))
console.log(numbers);
console.log(numbers.some(function(curItem){
curItem+=1;
return curItem>4;
}))
console.log(numbers);
console.log(numbers.forEach(function(curItem){
curItem+=1;
sum+=curItem;
console.log(sum)
}))
console.log(numbers);
console.log(numbers.filter(function(curItem){
curItem+=1;
return curItem>4;
}))
console.log(numbers);
console.log(numbers.map(function(curItem){
curItem+=1;
return curItem>4;
}))
console.log(numbers);

/**
*
*/
// 归并方法
//
// arr.reduce(fn[,init]),对数组的每项运行给定函数,从第一个开始执行函数返回最后一项返回的值
// fn可以接受四个参数 前一项返回的值,当前项,当前索引,当前数组
// 第一次运行的时候,如果没写init的值则前一项返回的值就是第一项,当前项会变成第二项
// 写了init的值,init就是前一项返回的值,当前项是第一项
// arr.reduceRight(fn[,init]) 从最后一项开始执行 不赘述
// 不改变原数组
var nums = [1,2,3,4,5];
console.log(nums.reduce(function (prevReturn,curItem) {
curItem += 1;
return prevReturn+curItem;
}))
console.log(nums)

/**
*
*/
// 改变原数组的方法:length(虽然不算方法),index(虽然也不算方法),splice,reverse,sort,pop,push,shift,unshift
//

</script>
</body>

</html>

时间: 2024-08-26 00:40:15

Array的个人总结的相关文章

PHP Warning: array_multisort(): Array sizes are inconsistent

array_multisort() 函数返回排序数组.您可以输入一个或多个数组.函数先对第一个数组进行排序,接着是其他数组,如果两个或多个值相同,它将对下一个数组进行排序. 遇到这报错是两个数组对比不一致导致的, 如果是一维数组与二维数组进行排序可以用以下方法解决: 使用这个方法,会比较麻烦些,要将age提取出来存储到一维数组里,然后按照age升序排列.具体代码如下: 复制代码代码如下: $ages = array();foreach ($users as $user) {    $ages[]

详解go语言的array和slice 【二】

上一篇  详解go语言的array和slice [一]已经讲解过,array和slice的一些基本用法,使用array和slice时需要注意的地方,特别是slice需要注意的地方比较多.上一篇的最后讲解到创建新的slice时使用第三个索引来限制slice的容量,在操作新slice时,如果新slice的容量大于长度时,添加新元素依然后使源的相应元素改变.这一篇里我会讲解到如何避免这些问题,以及迭代.和做为方法参数方面的知识点. slice的长度和容量设置为同一个值 如果在创建新的slice时我们把

JavaScript的进阶之路(三)引用类型之Object类型和Array类型

引用类型 Object类型 function a(num){ if(num>3){ a(--num); } console.log(num); } a(5); //如何创建对象的实例 var obj1= new Object(); console.log(obj1); obj1.name="吴琼"; obj1.age=28; console.log(obj1.name+" "+obj1.age); //对象字面量语法 ,有点封装的感觉 var obj2 = {

LeetCode 442. Find All Duplicates in an Array (在数组中找到所有的重复项)

Given an array of integers, 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once. Find all the elements that appear twice in this array. Could you do it without extra space and in O(n) runtime? Example: Input: [4,3,2,7,

实现一个函数clone,使JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制

实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number.String.Object.Array.Boolean)进行值复制. 1 /** 对象克隆 2 * 支持基本数据类型及对象 3 * 递归方法 */ 4 function clone(obj) { 5 var o; 6 switch (typeof obj) { 7 case "undefined": 8 break; 9 case "string": o = obj + &q

421. Maximum XOR of Two Numbers in an Array

Given a non-empty array of numbers, a0, a1, a2, - , an-1, where 0 ≤ ai < 231. Find the maximum result of ai XOR aj, where 0 ≤ i, j < n. Could you do this in O(n) runtime? Example: Input: [3, 10, 5, 25, 2, 8] Output: 28 Explanation: The maximum resul

JavaScript------去掉Array中重复值

转载: http://blog.csdn.net/teresa502/article/details/7926796 代码: // 删除数组中重复数据 function removeDuplElem(array){ for(var i=0; i<array.length; i++){ for(var j=i+1; j<array.length;j++){ if(array[i]==array[j]){ array = removeElement(j,array);//删除指定下标的元素 i=-

Typescript : 遍历Array的方法:for, forEach, every等

方法一,for-of 这个貌似是最常用的方法,angular 2中HTML语法绑定也是要的这种语法. let someArray = [1, "string", false]; for (let entry of someArray) { console.log(entry); // 1, "string", false } for-in 官方文档上强调了for-in和for-of的区别: let list = [4, 5, 6]; for (let i in li

opendressinghash //use resize array

1 public class opendressinghash<Key, Value> { 2 private static final int INIT_CAPACITY = 4; 3 4 private int n; 5 private int m; 6 private Key[] keys; 7 private Value[] vals; 8 9 public opendressinghash() { 10 this(INIT_CAPACITY); 11 } 12 13 public o

215. Kth Largest Element in an Array

Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element.For example,Given [3,2,1,5,6,4] and k = 2, return 5.Note:You may assume k is always valid, 1 ≤ k ≤ array's le