扩展运算符和数组map、filter、find 方法

论坛 期权论坛 脚本     
匿名技术用户   2020-12-26 23:01   11   0
<script type="text/javascript">
    var o ={a:1}
    var o1 ={b:2}
    var o2 ={c:3}

    //Object.assign(target,要合并的对象1,要合并的对象2)
    var a1 = Object.assign(o,o1,o2);// = Object.assign({}, o, o1,o2) 赋值
    console.log(a1,'a1') // {a: 1, b: 2, c: 3} 'a1'
    Object.assign(o,o1,o2) //默认  
    console.log(o,'o');//{a: 1, b: 2, c: 3} 'o'
    var newo = Object.assign({}, o, o1,o2)
    console.log(newo,'o');//{a: 1, b: 2, c: 3} 'o'

 function fn1(opts){
  let defaults = {
   a:'mr1',
   b:'mr2',
   c:'mr3'
  }
  Object.assign(defaults,opts);
  console.log(defaults)
 }
 fn1({
  a:1,
  b:2,
  c:3
 })

 /*ES5 的方法:map()、filter()、reduce()、every()、some()
 ES5 的方法:find()、findIndex()
 */
 //arr.map() 映射
 var arr = [1,2,3];//数组的每一项都乘以2,放在新数组
 var newArr = arr.map(function(item,index){ //对每项处理放在新数组
  console.log(item,index);
  return item*2;
 })
 console.log(newArr)//2,4,6
    list.map(item =>item*2)
    list.filter((item,index)=>item*2) //无{}不要return
 list.filter((item,index)=>{return item*2}) //有{}要return

    list.forEach(item =>item*2)
    list.forEach(item=>{item*2}) //forEach {}里面不加return 里面为运算 return 写在{}外面
    list.forEach((item,index) =>{item*2})

 //arr.filter() 过滤、选择
 var arr2 = [1,2,3,4,5,6]
 var newArr2 = arr2.filter(function(item,index){
  console.log(item,index);
  return true;//条件成立
  return false;
  return item % 2 === 0;//条件
 })
 console.log(newArr2);

 //arr.find() 只找符合条件的第一个
 var arr3 = [1,2,3,4,5,6,7,8,9]
 var newAarr3 = arr3.find(function(item,index){
  console.log(item,index);
  return item > 6;
 });
 console.log(newAarr3)//7

 //arr.findIndex() 只找符合条件的第一个元素的索引位置
 var arr4 = [5,12,33,44]
 var newArr4 = arr4.findIndex(function(item,index){
  return item > 12;
 });
 console.log(newArr4)//2

 //arr.reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右依次)开始缩减,最终计算为一个值。对空数组是不会执行回调函数的。
 var arr5 = [5,12,33,44]
 var newArr5 = arr5.reduce(function(item,index){
  return item+index;
 });
 console.log(newArr5)//94

 //arr.every()方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。every() 方法使用指定函数检测数组中的所有元素:如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。如果所有元素都满足条件,则返回 true。
 var arr6 = [5,6,7,8]
 var newArr6 = arr6.every(function(item,index){
  return item > 6;
 });
 console.log(newArr6)//false

 /*arr.some()
 some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。
 some() 方法会依次执行数组的每个元素:
 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
 如果没有满足条件的元素,则返回false。*/

 var arr7 = [11,12,13,15]
 var newArr7 = arr7.every(function(item,index){
  return item < 12;
 });
 console.log(newArr7)//true
 </script>

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP