<!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>

Array的个人总结的更多相关文章

  1. javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈

    Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...

  2. ES5对Array增强的9个API

    为了更方便的对Array进行操作,ES5规范在Array的原型上新增了9个方法,分别是forEach.filter.map.reduce.reduceRight.some.every.indexOf ...

  3. JavaScript Array对象

    介绍Js的Array 数组对象. 目录 1. 介绍:介绍 Array 数组对象的说明.定义方式以及属性. 2. 实例方法:介绍 Array 对象的实例方法:concat.every.filter.fo ...

  4. 了解PHP中的Array数组和foreach

    1. 了解数组 PHP 中的数组实际上是一个有序映射.映射是一种把 values 关联到 keys 的类型.详细的解释可参见:PHP.net中的Array数组    . 2.例子:一般的数组 这里,我 ...

  5. 关于面试题 Array.indexof() 方法的实现及思考

    这是我在面试大公司时碰到的一个笔试题,当时自己云里雾里的胡写了一番,回头也曾思考过,最终没实现也就不了了之了. 昨天看到有网友说面试中也碰到过这个问题,我就重新思考了这个问题的实现方法. 对于想进大公 ...

  6. javascript之活灵活现的Array

    前言 就如同标题一样,这篇文章将会灵活的运行Array对象的一些方法来实现看上去较复杂的应用. 大家都知道Array实例有这四个方法:push.pop.shift.unshift.大家也都知道 pus ...

  7. 5.2 Array类型的方法汇总

    所有对象都具有toString(),toLocaleString(),valueOf()方法. 1.数组转化为字符串 toString(),toLocaleString() ,数组调用这些方法,则返回 ...

  8. OpenGL ES: Array Texture初体验

    [TOC] Array Texture这个东西的意思是,一个纹理对象,可以存储不止一张图片信息,就是说是是一个数组,每个元素都是一张图片.这样免了频繁地去切换当前需要bind的纹理,而且可以节省系统资 ...

  9. Merge Sorted Array

    Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note:Yo ...

  10. C++ std::array

    std::array template < class T, size_t N > class array; Code Example #include <iostream> ...

随机推荐

  1. [Java]使用HttpClient实现一个简单爬虫,抓取煎蛋妹子图

    第一篇文章,就从一个简单爬虫开始吧. 这只虫子的功能很简单,抓取到”煎蛋网xxoo”网页(http://jandan.net/ooxx/page-1537),解析出其中的妹子图,保存至本地. 先放结果 ...

  2. .NET跨平台之旅:将示例站点从 ASP.NET 5 RC1 升级至 ASP.NET Core 1.0

    终于将“.NET跨平台之旅”的示例站点 about.cnblogs.com 从 ASP.NET 5 RC1 升级至 ASP.NET Core 1.0 ,经历了不少周折,在这篇博文中记录一下. 从 AS ...

  3. SpringBoot揭秘:快速构建微服务体系

    chapter 2: 饮水思源:回顾与探索Spring框架本质 IoC其实有两种方式,一种是DI(dependency Injection),一种是DL(dependency Lookup 依赖查找, ...

  4. 【BZOJ 4579】【Usaco2016 Open】Closing the Farm

    http://www.lydsy.com/JudgeOnline/problem.php?id=4579 把时间倒过来,只是加点,并查集维护连通块. #include<cstdio> #i ...

  5. 自己封装的常用NPOI文件导出源码

    示例: 1. 2.示例2 源码下载地址:https://github.com/aa1356889/NPOICode

  6. Python 【第八章】:JavaScript 、Dom、jQuery

    JavaScript 放置位置 body内部最下面,这样可以避免javascript链接失效时,长时间加载不到页面html内容 变量: var a =123 局部变量 a = 123 全局变量 作用域 ...

  7. SpringBoot IntelliJ创建简单的Restful接口

    使用SpringBoot快速建服务,和NodeJS使用express几乎一模一样,主要分为以下: 1.添加和安装依赖  2.添加路由(即接口) 3.对路由事件进行处理 同样坑的地方就是,祖国的防火墙太 ...

  8. RabbitMQ 集群

    集群 消息队列要想在项目里用的溜,还是要做集群.稳定可靠 但是如果只有一个服务器的话 崩溃的话还是会懵逼的.所以集群化让崩溃的损失降到最小. 在这里我要用三台机器来做集群,不同系统在一起集合才叫酸爽 ...

  9. canvas流星月亮星星银河

    这是页面的特效,首先月亮直接出现,然后星星和银河渐渐的出现(一闪一闪),最后流星划过,留下完美的句点. 所有的动画都是通过帧来实现的. 星星的代码分为2部分,首先是随机生成星星,然后是绘制星星,最后是 ...

  10. bzoj 4610 Ceiling Functi

    bzoj 4610 Ceiling Functi Description bzoj上的描述有问题 给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树. Inp ...