欢迎访问我的博客https://qqqww.com/,祝码农同胞们早日走上人生巅峰,迎娶白富美~~~
目录:
- Array 对象属性
- Array 对象方法
- concat()
- join()
- pop()
- shift()
- push()
- unshift()
- reverse()
- slice()
- sort()
- splice()
- toSource()
- toString()
- toLocaleString()
- valueOf()
- Array 部分方法实现
- 数组元素去重
- 数组最值
- 数组排序
- 数组翻转
Array 对象属性
constructor : 返回对创建此对象的数组函数的引用
var test=new Array()
if (test.constructor==Array){
document.write("This is an Array")
}
length 设置或返回数组中元素的数目。
prototype 可以向构造函数的原型对象添加属性和方法
Array 对象方法
concat()
连接两个或更多的数组,并返回结果
var arr = [1,2,3,4];
var arr2 = [5,6,7,8];
var arr3 = arr.concat(arr2);
console.log(arr3); // 连接之后返回的数组为:[1, 2, 3, 4, 5, 6, 7, 8]
join()
把数组的所有元素放入一个字符串,元素通过指定的分隔符进行分隔
var arr = ['xiao','lin','qiqi','mingtian'];
var arr2 = arr.join(',');
console.log(arr2); // 根据','隔开返回的字符串为:"xiao,lin,qiqi,mingtian"
pop()
删除并返回数组的最后一个元素
var arr = [2,3,4,5];
var arr2 = arr.pop();
console.log(arr2); // 删除的数组的最后一个元素为:5
console.log(arr); // 删除元素之后的数组为:[2, 3, 4]
shift()
删除并返回数组的第一个元素
var arr = [2,3,4,5];
var arr2 = arr.shift();
console.log(arr2); // 删除的数组的第一个元素为:2
console.log(arr); // 删除元素之后的数组为:[3, 4,5]
push()
向数组的末尾添加一个或更多元素,并返回新的长度
var arr = [2,3,4,5];
var arr2 = arr.push(6);
console.log(arr2); // 返回的数组长度:5
console.log(arr); // [2, 3, 4, 5, 6]
unshift()
向数组的开头添加一个或更多元素,并返回新的长度
var arr = ['xiao','ming','qiqi','aiming'];
var arr1 = arr.unshift('lang');
console.log(arr1); // 返回的数组的长度: 5
console.log(arr); //向数组开头添加元素返回的结果:["lang", "xiao", "ming", "qiqi", "aiming"]
reverse()
颠倒数组中元素的顺序
var arr = [2,3,4,5];
arr.reverse();
console.log(arr); // [5, 4, 3, 2]
slice()
从某个已有的数组返回选定的元素
var arr = [2,3,4,5];
var arr2 = arr.slice(1,3);
console.log(arr2); // 截取区间返回的数组为:[3, 4]
console.log(arr); // [2, 3, 4, 5]
sort()
对数组的元素进行排序
// 借助排序函数,实现数值由小到大排序
function sortNumber(a,b){
return a - b
}
var arr = [23,30,42,5];
var arr2 = arr.sort(sortNumber);
console.log(arr2); // [5, 23, 30, 42]
console.log(arr); // [5, 23, 30, 42]
// 借助排序函数,实现数值由大到小排序
function sortNumber(a,b){
return b - a
}
var arr = [23,30,42,5];
var arr2 = arr.sort(sortNumber);
console.log(arr2); // [42, 30, 23, 5]
console.log(arr); // [42, 30, 23, 5]
splice()
删除元素,并向数组添加新元素。
// 创建一个新数组,并向其添加一个元素
var arr = [1,2,3,4];
arr.splice(2,0,5);
console.log(arr); // [1, 2, 5, 3, 4]
// 删除位于 index 2 的元素,并添加一个新元素来替代被删除的元素:
var arr = [1,2,3,4];
arr.splice(2,1,5);
console.log(arr); // [1, 2, 5, 4]
toSource()
返回该对象的源代码
// 浏览器支持
// 只有 Gecko 核心的浏览器(比如 Firefox)支持该方法,也就是说 IE、Safari、Chrome、Opera 等浏览器均不支持该方法。
<script type="text/javascript">
function employee(name,job,born){
this.name=name;
this.job=job;
this.born=born;
}
var bill = new employee("Bill Gates","Engineer",1985);
document.write(bill.toSource());
</script>
// 输出:({name:"Bill Gates", job:"Engineer", born:1985})
toString()
把数组转换为字符串,并返回结果
var arr = ['xiao','ming','qiqi','aiming'];
arr.toString();
console.log(arr); // ["xiao", "ming", "qiqi", "aiming"]
toLocaleString()
把数组转换为本地数组,并返回结果
var arr = ['xiao','ming','qiqi','aiming'];
arr.toLocaleString();
console.log(arr); // ["xiao", "ming", "qiqi", "aiming"]
valueOf()
返回数组对象的原始值
var arr = ['xiao','ming','qiqi','aiming'];
arr.valueOf('lang');
console.log(arr); // ["xiao", "ming", "qiqi", "aiming"]
array1
array2
array3
Array 部分方法实现
数组元素去重
方法一:
思路:
1. 定义一个 json 对象
2. 遍历数组,将 arr[i] 作为 json 的键
3. 若 不重复,则给对应 arr[i] 的键值为 1 作为后面判断的标识,并 push 到新数组 arr1 中,若重复,则删除
var arr = [1, 2, 3, 2, 1, 5, 6, 3, 3, 2, 1, 7, 9, 8,6]
var arr1 = []
var json = {}
for (var i = 0; i < arr.length; i++) {
if (!json[arr[i]]) {
json[arr[i]] = 1
arr1.push(arr[i])
}
}
方法二:
思路:
- 定义一个新数组 arr1
- 如果这个新数组中没有这个元素,则 push
var arr = [1, 2, 3, 2, 1, 5, 6, 3, 3, 2, 1, 7, 9, 8,6]
var arr1 = []
for (var i = 0; i < arr.length; i++) {
if (arr1.indexOf(arr[i]) < 0) {
arr1.push(arr[i])
}
}
方法三:filter
-
filter
的接收回调,可以有多个参数回调可以接收三个参数,第一个是数组中的元素,第二个是位置,第三个是数组本身 - 利用
filter
过滤器,总是返回元素第一个位置 - 去除重复元素依靠的是
indexOf
总是返回第一个元素的位置,后续的重复元素位置与indexOf
返回的位置不相等,因此被filter
滤掉了
var arr = [1, 2, 3, 2, 1, 5, 6, 3, 3, 2, 1, 7, 9, 8,6]
var arr1 = arr.filter(function(ele, index, self) {
return self.indexOf(ele) === index
})
console.log(arr1)
数组最值
方法一:Math.max.apply
And Math.min.apply
方法一:Math.max.apply
var iMax = 0
var iMin = 0
var arr = [1, 268, 5, 4, 9, 0, 68]
iMax = Math.max.apply(null, arr)
iMin = Math.min.apply(null, arr)
console.log(iMax, iMin)
方法二::Math.max.call
And Math.min.call
var iMax = 0
var iMin = 0
var arr = [1, 268, 5, 4, 9, 0, 68]
iMax = Math.max.call(null, 1, 268, 5, 4, 9, 0, 68)
iMin = Math.min.call(null, 1, 268, 5, 4, 9, 0, 68)
console.log(iMax, iMin)
方法三:循环比较
var iMax = 0
var iMin = 0
var arr = [1, 268, 5, 4, 9, 0, 68]
for (var i = 0; i < arr.length; i++) {
if (iMax < arr[i]) {
iMax = arr[i]
}
if (iMin > arr[i]) {
iMin = arr[i]
}
}
console.log(iMax, iMin)
数组排序
sort
原理:在不带参数的情况下sort()方法默认会将数组元素当作string类型来升序排序,根据它们的unicode码从小到大依次排列,如果想按照自己的条件进行排序,需要传一个比较函数
var arr = [1, 268, 5, 4, 9, 0, 68]
// 从小到大
arr.sort(function (a, b) {
return a - b
})
console.log(arr)
// 从大到小
arr.sort(function (a, b) {
return b - a
})
console.log(arr)
冒泡排序
思路:每次比较相邻的两个数,如果后一个比前一个小,换位置。如果要实现由大到小排序,使用reverse()即可;
var a = [1, 268, 5, 4, 9, 0, 68, 67, 69, 96, 14, 78, 100, 25, 42, 23, 32, 68, 89, 98, 1]
var temp = 0
for (var i = 0; i < a.length; i++) {
for (var j = 0; j < a.length - i; j++) {
if (a[j] > a[j + 1]) {
temp = a[j]
a[j] = a[j + 1]
a[j + 1] = temp
}
}
}
var b = a.reverse()
console.log(a)
快速排序
思路:采用二分法,取出中间数,数组每次和中间数比较,小的放到左边,大的放到右边。
var arr = [1, 268, 5, 4, 9, 0, 68, 67, 69, 96, 14, 78, 100, 25, 42, 23, 32, 68, 89, 98, 1]
function quickSort(arr) {
if(arr.length == 0) {
return []; // 返回空数组
}
var arrL = []
var arrR = []
var index = Math.floor(arr.length / 2)
var arrM = arr.splice(index, 1) // 返回被删除的数
for (var i = 0; i < arr.length; i++) {
if (arrM > arr[i]) {
arrL.push(arr[i])
} else {
arrR.push(arr[i])
}
}
// console.log(arrL.concat(arrR))
return quickSort(arrL).concat(arrM, quickSort(arrR))
}
console.log(quickSort(arr))
数组翻转(非reverse)
方法一:
删除数组最后一个元素并返回被删除的元素
var arr = [1,2,3,4];
var arr2 = [];
while(arr.length) {
var num = arr.pop(); //删除数组最后一个元素并返回被删除的元素
arr2.push(num);
}
console.log(arr2);
// [4, 3, 2, 1]
方法二:
删除数组第一个元素并返回被删除的元素
var arr = [1,2,3,4];
var arr2 = [];
while(arr.length){
var num = arr.shift(); //删除数组第一个元素并返回被删除的元素
arr2.unshift(num);
}
console.log(arr2);
网友评论