ES6入门摘入

ES6 — 数组方法

2019-10-28  本文已影响0人  name_howe

一、forEach 循环

var colors = ['red','blue','green']

// es5
for(var i = 0; i < colors.length; i++){
    console.log(colors[i]);
}
// es6
colors.forEach(function(color){
    console.log(color);
});

二、map 需要返回值,如果不给return,默认返回undefined map返回的是一个新的数组

1、场景一 假定有一个数组A,将A数组中的值以双倍形式放到B数组

var numbers = [1,2,3]

// es5
var doubeldNumbers = [];
for(var i = 0; i < numbers.length; i++){
    doubeldNumbers.push(numbers[i] * 2);
}
console.log(doubeldNumbers);
// es6
var doubeld = numbers.map(function(number){
    return number * 2;
});
console.log(doubeld);

2、场景二 假定有一个数组对象a,将a数组中对象某个属性的值储存到b数组中

// es6
var cars = [
    {
        model:'buick',
        price:'cheap'
    },
    {
        model:'bmw',
        price:'expensive'
    }
];
var prices = cars.map(function(car){
    return car.peice;
});

三、filter 过滤 查找符合条件的所有值

1、场景一 假设有一个对象数组a 获取数组中指定类型的对象放到b数组中

var products = [
    {
        name:'a',
        type:'1'
    },
    {
        name:'b',
        type:'2'
    },
    {
        name:'c',
        type:'1'
    },
    {
        name:'d',
        type:'2'
    }
]
// es5
var es5 = [];
for(var i = 0; i < products.length; i++){
    if(products[i].type === '2'){
        es5.push(products[i]);
    }
}
// es6
var es6 = products.filter(function(e){
    return e.type === '2';
});
console.log(es6);

2、场景二 假设有一个对象数组a 过滤掉不满足以下条件的对象:蔬菜 数量大于0 价格小于10

var products2 = [
    {
        num:0,
        price:15
    },
    {
        num:5,
        price:8
    },
    {
        num:2,
        price:12
    },
    {
        num:7,
        price:2
    }
]
var es6_t = products2.filter(function(e){
    return e.num > 0 && e.price < 10;
});
console.log(es6_t);

3、场景三 假设有两个数组a,b 根据a中的id值 过滤掉b数组不符合的数据

var products3 = {
    id:2
}
var es6_s = [
    {
        postId:0,
        content:'one'
    },
    {
        postId:1,
        content:'two'
    },{
        postId:2,
        content:'three'
    },
    {
        postId:3,
        content:'four'
    }
]
function comments(a,b){
    return b.filter(function(e){
        return e.postId === a.id;
    });
}
console.log(comments(products3,es6_s));

四、find 当查找到符合条件的第一个值后 会返回 不会再继续执行下去

1、场景一 假设有一个对象数组a 找到符合条件的对象

var users = [
    {
        name:'a'
    },
    {
        name:'b'
    },
    {
        name:'c'
    }
]
var user = users.find(function(e){
    return e.name === 'b';
})

2、场景二 假设有一个对象数组a 根据指定对象的条件找到数组中符合条件的对象

var posts = [
    {
        id:0,
        title:'cont1'
    },
    {
        id:1,
        title:'cont2'
    }
]
var posts_t = {
    postId:0,
    content:'hellow world!'
}
function arr(a,b){
    return a.find(function(e){
        return e.id === b.postId;
    });
}
console.log(arr(posts,posts_t));

五、every && some

1、场景一 计算对象数组中每个电脑的操作系统是否可用 大于16位操作系统表示可用 否则不可用

var computers = [
    {
        name:'IBM',
        ram:4
    },
    {
        name:'Apple',
        ram:16
    },
    {
        name:'Acer',
        ram:32
    }
];
var every_o = true;
var some_o = false;

// es5
for(var i = 0; i < comments.length; i++){
    var computer = computers[i];
    if(computer.ram < 16){
        every_o = false;  //一假即假
    }else{
        some_o = true; //一真即真
    }
}
// es6
var every_t = computers.every(function(e){
    return e.ram > 16; //所有为真 才为真
});
console.log(every_t);
var some_t = computers.some(function(e){
    return e.ram > 16; //如果有一个是真的 则返回为真
});
console.log(every_t);

2、场景二 假设有一个注册页面 判断所有input内容的长度是否大于0

function Field(value){
    this.value = value
}
Field.prototype.validate = function(){
    return this.value.length > 0
}
var username = new Field("zhangh");
var telephone = new Field("15451321321");
var password = new Field("my_password");
var fields = [username,telephone,password]
var form = fields.every(function(e){
    return e.validate()
})
console.log(form)

六、reduce

1、场景一 计算数组中所有值的总和

var numbers = [10,20,30];
var sum = 0;

// es5
for(var i = 0; i < numbers.length; i++){
    sum += numbers[i];
}
// es6
var sums = numbers.reduce(function(a,b){
    console.log(a);
    return a + b;
},0);// 0定义了a的起始值 (初始化a),可以定义不同类型值

2、场景二 将数组中对象的某个属性抽离到另一个数组中

var primaryColor = [
    {
        color:'red'
    },
    {
        color:'green'
    },
    {
        color:'blue'
    }
]
var colors = primaryColor.reduce(function(a,b){
    a.push(b.color);
    return a;
},[]);
console.log(colors);

3、场景三 判断字符串中括号是否对称

function kuoh(string){
    return !string.split("").reduce(function(a,b){
        if(a<0){
            return a
        }
        if(b == "("){
            return ++a
        }
        if(b == ")"){
            return --a
        }
        return a;
    },0);
}
console.log(kuoh("()()())("))
上一篇下一篇

猜你喜欢

热点阅读