JavaScript Array/forEach/sort/jo

2018-05-06  本文已影响0人  青山白衣

对象是用于构造数组的全局对象,数组是类似于列表的高阶对象。

1.数组声明

var a = Array(3)会生成一个长度为3的空数组


image.png
//三种写法一样,都是生成相同数组 
var a = Array(3,3)
var a = [3,3]
var a = new Array(3,3)

一个3与两个3的结果不同,也称为js的不一致性。

2.数组遍历
image.png
3.伪数组

原型链中没有Array.prototype即为伪数组
在js中只有一个伪数组 arguments


image.png
4.数组的API
4.1 arr.forEach()接受一个函数,函数接受两个参数,第一个参数为数组的value,第二个为key,forEach()没有返回值『 不会改变原始数组 』如下图
image.png
了解更多关于forEach https://www.jianshu.com/p/fb7f72d6b73f
4.2 arr.sort() 『 会改变原始数组 』
var a = [3,6,1,5,2,4]

a.sort() //[1, 2, 3, 4, 5, 6]

a.sort(function(x,y){
    return x-y
}) //[1, 2, 3, 4, 5, 6]

a.sort(function(x,y){
    return y-x
}) //[6, 5, 4, 3, 2, 1]
实现 students 按分数的高低从大到小排列*/
//方法1:
var students = ['小明','小红','小花'] 
var scores = { 小明: 59, 小红: 99, 小花: 80 }
students.sort(function(x,y){ return scores[y]-scores[x]})
//方法2:
var students = ['小明','小红','小花'] 
var scores = { 小明: 59, 小红: 99, 小花: 80 }
students.sort((x,y) =>scores[y]-scores[x])
4.3 arr.join()『 不会改变原始数组 』
var a = ['a','b','c']

a.join('--')//"a--b--c"

a.join(',') // "a,b,c"  此处用逗号连接,将数组a变为了字符串
a.join() // 与上一行等同
4.4 arr.concat()『 不会改变原始数组 』
var a = ['a','b','c']
a.concat('ss') // ["a", "b", "c", "ss"]

var b = ['q','w','e']
a.concat(b) 
a // ["a", "b", "c", "q", "w", "e"]

b.concat(a) 
b // ["q", "w", "e", "a", "b", "c"]

var c = a.concat(b)
c // ["a", "b", "c", "q", "w", "e"]

var a = ['a','b','c']
var b = a.concat([]) // 这个方法可以用来复制一个数组
b // ["a", "b", "c"]
// 这样可以得到一个新的数组,此时 a === b 返回 false

var a = ['a','b','c']
var b = a
b // ["a", "b", "c"]
//  这样数组a与b使用同一内存地址,此时 a === b 返回 true
4.5 arr.map() 『不会改变原始数组,与forEach一样,唯一不同的是map有返回值』
//map可以返回一个值
var a = ['1','2','3']
a.map(function(x,y){
    return x*2
}) // [2, 4, 6]
//map也可以返回一个对象
var a = [1,2,3]
a.map(function(value,key){
    return{
        v:value,k:key 
    }
})
// {v: 1, k: 0}
// {v: 2, k: 1}:
// {v: 3, k: 2}
4.6 arr.filter() 『不会改变原始数组』
var a = [1,2,3,4,5,6,7,8,9,10]
a.filter(function(value,key){
    return value>=5
}) // [5, 6, 7, 8, 9, 10]
/*var a = [1,2,3,4,5,6,7,8,9]
获取所有偶数并得到所有偶数的平方*/
//方法1:
var a = [1,2,3,4,5,6,7,8,9]
a.filter(function(value){
    if(value%2===0){
        return a;
    }
}).map(function(value){
    return value*value 
})
4.7 arr.reduce()『不会改变原始数组』
/*var a = [1,2,3,4,5,6,7,8,9]
计算所有数的和*/
var a = [1,2,3,4,5,6,7,8,9]
a.reduce(function(num,now){
    return num+now
}) // 45
map,filter 可以用reduce表示,如下
/*var a = [1,2,3,4,5,6,7,8,9]
计算所有奇数的和*/
//方法1:
var a = [1,2,3,4,5,6,7,8,9]
a.reduce(function(num,now){
    if(now%2===1){
        return num+now 
    }else{
        return num 
    }
},0) // 25
//返回数组成员*2后的数组
var a = [1,2,3]
a.reduce(function(arr,n){
    arr.push(n*2)
    return arr
},[]) // [2, 4, 6]
//返回数组偶数成员
var a = [1,2,3,4]
a.reduce(function(arr,n){
    if(n%2===0){
        arr.push(n)
    }
        return arr
},[]) // [2,4]
上一篇 下一篇

猜你喜欢

热点阅读