javascript 数组

来源:互联网 发布:鞋子淘宝试用报告范文 编辑:程序博客网 时间:2024/04/30 20:46
数组是值的有序集合,每个值叫做元素,每个元素在数组中都有数字位置编号,<br />
也就是索引,js中的数组是弱类型的,数组中可以含有不同类型的元素。数组元素甚至可以是对象或其它数组
<br />

1、数组可以动态添加值的,无需指定大小。<br />
2、数组可以用for in 枚举,但是会枚举出原型上的属性<br />
3、可以用for  循环 while 等<br />
4、0 in arr  判断数组索引0是否有值<br />
5、可以通过修改length来动态修改数组大小<br />
6、可以直接用[100] 为指定索引赋值<br />

<script>
var arr1=[1,2];
//数组变量的构造函数指向Array
console.log(arr1.constructor===Array)
</script>


7、Array.from(obj|arr|str,[mapfn],[this])<br />
从类似数组的对象或可迭代的对象返回一个数组。参数需是具有编制索引的元素和 length 属性的对象或可迭代对象,如 Set 对象。<br />
对数组中每个元素调用了可选映射函数。<br />
this可选。指定映射函数中的 this 对象。<br />
以前转换数组需要用[].slice.call(arguments) 现在用Array.from(arguments)<br />


<script>
//元素集合返回数组
var a=Array.from(document.querySelectorAll('*'))
console.log(a);

//返回字符串数组 和split有些像
a=Array.from('abc')
console.log(a);

//set数据结构返回 数组
a=Array.from(new Set(['a','b','c']))
console.log(a);

//映射函数用法
a=Array.from('123',function(x){
return x*x
})
console.log(a);

//创建指定长度的数组
a=Array.from({length:100}).map(function(x,index){
return index
})
console.log(a);

//指定映射内this 
var obj={name:'star'}
a=Array.from('abcdefg',function(x){
return this.name+x;
},obj)
console.log(a);
</script>

8、Array.isArray(obj)<br />
确定对象是否为数组。如果 object 是数组,则为 true;否则为 false。如果 object 参数不是对象,则返回 false。<br />

<script>
console.log('---------------------')
console.log(Array.isArray({}))//false
console.log(Array.isArray([]))//true
console.log(Array.isArray(new Set()))//false
console.log(Array.isArray(document.querySelectorAll('*')))//false
</script>

9、Array.of(element0[, element1][, ...][,elementN])<br />
从传入的参数返回一个数组。<br />
可选。要置于数组中的元素。这将创建一个具有 n + 1 个元素且长度为 n + 1 的数组。<br />
此函数类似于调用 new Array(args),但当传入一个参数时,Array.of 不包括特殊行为。<br />
of 和new Array对于单个数字,处理不一样,of当成0的值,new 当成数组长度<br />
<script>
console.log('---------------------')
console.log(Array.of(1,2,3))
console.log(Array.of(3))//[3]
console.log(new Array(3))//返回数组为空,长度为3
</script>


10、array.concat(arr,....)<br />
组合两个或两个以上的数组,返回新数组,array数组不会修改。<br />
参数可以是数组,字符串,数字等。二维数组直接当值了。
<script>
console.log('---------------------')
var a=[1,2];
var b=a.concat(a,4,[5,6,[7]])
console.log(a,b)
</script>

11、array.indexOf(val,index)<br />
返回某个值在数组中的第一个匹配项的索引。没有返回-1<br />
index指定搜索的开始索引,可以是负数,就是从后往前位索引,也就是数组长度+负数的位置开始<br />
<script>
console.log('---------------------')
a=[1,2,3,4,5,6];
console.log(a.indexOf(1,2))
</script>

12、array.lastIndexOf(val,index)<br />
返回指定的值在数组中的最后一个匹配项的索引。<br />
用法同上<br />

13、array.join([separator])<br />
用指定的分隔符链接数组元素返回字符串,如值为undefined null 视为空<br />
分隔符可选 <br />
它和字符串split(分隔符,返回长度)  经常一起用<br />

14、array.hasOwnProperty(索引)<br />
确定数组是否具有指定索引的值。<br />
<script>
console.log('---------------------')
//数组值索引2是否有值
console.log([1,2,0].hasOwnProperty(2))
//数组原型对象 是否有indexOf方法
console.log([].__proto__.hasOwnProperty('indexOf'))
</script>

15、push pop shift unshift<br />
push(val,val,[val])  将新元素追加到一个数组中,并返回新的数组长度。 数组参数直接添加<br />
pop()  从数组中移除最后一个元素并返回该元素<br />
unshift()  在数组的开头插入新元素。用法和push一样<br />
shift()  从数组中移除第一个元素并将返回该元素。
<script>
console.log('---------------------')
a=[1,2]
console.log(a.push(3,4,[5,6]),a)
</script>

16、array.valueOf()<br />
返回指定对象的基元值。返回数组实例<br />
数组的valueOf() 和数组绝对相等<br />
<script>
console.log('---------------------')
a=[1,2,3]
console.log(a===a.valueOf())//true
</script>

17、array.toString()<br />
返回数组的字符串表示形式。 分隔符为逗号。和join功能类似<br />

18、array.keys()  array.values() array.entries()<br />
返回一个迭代器,它能返回数组的索引值。<br />
返回一个迭代器,它返回数组的值。<br />
返回一个迭代器,它返回数组的键/值对。[index,value]
<script>
console.log('---------------------')
var k=[1,2,3].keys();
var v=[1,2,3].values();
var e=[1,2,3].entries();
console.log(k.next().value,v.next().value ,e.next().value )
console.log(k.next().value ,v.next().value ,e.next().value )
console.log(k.next().value ,v.next().value,e.next().value  )
</script>

19、array.filter(callfn,thisobj)<br />
返回数组中的满足回调函数中指定的条件的元素,组成新数组。<br />
一个包含回调函数为其返回 true 的所有值的新数组。如果回调函数为 array1 的所有元素返回 false,则新数组的长度为 0。<br />
函数参数为:value,index,arr<br />
<script>
console.log('---------------------')
var o={num:10}
var a=[1,32,42,23,5,3,5,76,4,3,43];
var r=a.filter(function(value,index,arr){
return value>this.num
},o)
console.log(a,r);
</script>

20、array.forEach(callfn,thisobj)<br />
数组每个元素执行指定操作<br />
循环数组执行函数,不修改数组。<br />
<script>
console.log('---------------------')
a.forEach(function(value,index,arr){
console.log(value*10)
})
</script>

21、findIndex(callfn,thisobj)<br />
返回满足回调函数中指定的测试条件的第一个数组元素的索引值,没有符合返回-1<br />
<script>
console.log('---------------------')
var r=a.findIndex(function(value,index){
return value>100;
})
console.log(r);
</script>

22、array.map(callfn,this.obj)<br />
对数组的每个元素调用定义的回调函数并返回包含结果的数组。<br />
循环数组执行函数,返回新数组<br />
<script>
console.log('---------------------')
var r=a.map(function(value,index){
return value*index;
})
console.log(r);
</script>

23、array.sort(fn)<br />
对数组排序,直接修改数组,返回值为数组本身。<br />
返回值为正数时 从小到大  返回值为负从大到小<br />
x-y   小-大   y-x  大-小
<script>
console.log('---------------------')
a.sort(function(x,y){
return y-x;
})
console.log(a)
</script>

24、array.reduce(callfn(prevalue,value,index,arr),initialvalue)<br />
对数组中的所有元素调用指定的回调函数。该回调函数的返回值为累积结果,并且此返回值在下一次调用该回调函数时作为参数提供。<br />
initialvalue为初始时累加的值<br />
函数参数:上一次的值, 当前值,当前索引,数组<br />
<script>
console.log('---------------------')
//pre 为上次值,初始为100 ,value为循环当前值
r=a.reduce(function(pre,value,index,arr){
return pre+value;
},100)
console.log(r);
</script>

25、array.reduceRight(callfn,initiavalue)<br />
从后向前循环数组,计算返回累积结果<br />

26、array.reverse()<br />
返回数组中的元素,返回结果数组。修改当前数组<br />
<script>
console.log('---------------------')
r=a.reverse();
console.log(r,a)
</script>

27、array.some(callfn,thisobj)<br />
函数执行时只要有一个返回了true,则返回true。
如果某些元素通过测试则返回true,否则为false。<br />
它循环到第一个返回true时,就结了,不再循环执行
<script>
console.log('-some--------------------')
//所有值都大于10才返回true
r=a.some(function(value,index,arr){
console.log(value);
return value>10
})
console.log(r);
</script>
28、array.every(callfn,thisobj)<br />
所有成员都满足测试返回true时,才返回true,否则false<br />
它循环到第一个返回false时,就结了,不再循环执行<br />


29、splice(start,deletecount,item1,item2..)<br />
从一个数组中移除元素,如有必要,在所移除元素的位置上插入新元素,并返回所移除的元素<br />
30、slice(start,end)<br />
返回一个数组中的一部分,并组成数组<br />
没有end时默认到结尾,参数可为负数,当视为length+值<br />

31、array.fill(value,start,end)<br />
使用指定值填充数组,可以设置需要填充的开始索引和结束索引,默认全填充<br />
0 0
原创粉丝点击