javascript对象基础(使用对象)---3对象、属性、方法的高级操作-Arrary

Array---ECMAScropt5新增了9个方法

  定位:2个--array.indexOf() 、 array.lastIndexOf()

    array.indexOf(searchElement[,fromIndex]);//数组中第一个匹配项的索引,没找到指定值,返回-1

   array.lastIndexOf(searchElement[,fromIndex]);//数组中最后一个匹配项的索引,没找到指定值,返回-1

 迭代:5个---forEach()、every()、some()、map()、filter()

      1.  array.forEach(callbackfn[,thisArg]):  为   数组中的每个元素  执行指定操作

    例1.1: function callback(value,index,arr){

                 document.write("value:"+value);

                 document.write("index:"+index);

                  document.write("arr:"+arr);

}

 var arrs=['a','b','c'];

  arrs.forEach(callback)

例1.2forEach()如何使用thisArg参数,该参数指定可对其引用this关键字的对象

   var obj={

        showResults:funciton(value,index){

            var squared=this.calcSquare(value);

                document.write("value:"+value);

                 document.write("index:"+index);

                  document.write("squared:"+squared);

                  document.write("<br/>")

            },

           calcSquare:function(x){return x*x}

};

var numbers=[5,6];

numbers.forEach(obj.showResults,obj);

numbers.forEach(function(value,index){this.showResults(value,index)},obj)

---every():  确定数组的  所有成员  是否满足指定的测试,全部满足返回true,如果数组没有元素,此方法也将返回true,注意,只要遇到callback为false,就不再继续查询数组元素

  function CheckIfEven(value,index,ar){

    document.write(value+" ");

      if(value%2==0){return true}else{return false}

    }

 var nums=[2,4,5,6,8];//

if(nums.every(CheckIfEven)){document.write(" 都是偶数");}else{document.write(" 不全为偶数");}//2 4 5不全为偶数

   every()  thisArg的用法:

 var checkNumericRange=function(vaule){

             if (typeof value!=='number') 

                     return false

             esle 

                     return value>=this.minimum&&value<=this.maximum;

      }

var nums=[10,15,19];

var obj={minimum:10,maximum:20}

if (nums.every(checkNumericRange,obj))

        document.write("都在指定范围内")

else  

    .write("部分在指定范围内")

-----some():确定指定的回调函数是否为数组中的任何元素均返回为true,如果找到callback为true立即返回true,如果回调不对任何元素返回true,则结果为false

  

  function CheckIfEven(value,index,ar){

      if(value%2==0){return true}

    }

var nums=[1,15,4,10,11,22];

var evens=nums.some(CheckIfEven);

if(evens)

       document.write("不全是奇数。")

else

    document.write("全是奇数。")

----map():对数组的每个元素调用定义的回调函数并返回包含结果的数组,即返回一个新数组,其中每个元素均为关联的原始数组元素的回调函数返回值

   var obj={

               divisor:10,

                remainder:funciton(value){ return value%this.divisor,}

     }

  var numbers=[6,12,25,30];

 var  result=numbers.map(obj.remainder,obj);

document.write(result);// 6,2,5,0

  map()应用一个非数组类型上,通过动态调用call()

function threeChars(value,index,str){

   return  str.substring(index-1,index+2)

  }

word="Thursday"

var result=[].map.call(word,threeChars);

//或 var  result=Array.prototype.map.call(word,threeChars);

document.write(result);//Th,Thu,hur,urs,rsd,sda,day,ay

--filter():返回数组中的满足回调函数中指定的条件的元素

 过滤数组中字符串元素

  var arr=[5,"element",20,"the",true]

   var result=arr.filter(

    function(value){ return (typeof value==='string');}

  );

document.write(result);// "element","the"

过滤字符串中每个单词的首字母

funciton CheckValue(value,index,ar){

  if(index==0) return true

  else  return ar[index-1]===" "

}

var  sentence="We are chinese"

var subset=[].filter.call(sentence,CheckValue);

document.write(subset) // W ,a ,c

 

汇总:2个 reduce()     reduceRight()

  array.reduce(callbackfn[,initialValue]):对数组中的所有元素调用指定的回调函数,该回调函数的返回值为累积结果,并且此返回值(累积结果)在下一次调用该回调函数时作为参数,

function callbackfn(previousValue,currentValue,currentIndex,array)//4个参数

如果向reduce()方法提供initialValue参数,则previousValue参数为initianlValue,currentValue参数是数组中第一个元素的值,

如果没有提供initialValue参数,则previousValue参数为数组中第一个元素的值,currentValue参数为数组中第二个元素的值

见例1

 

 例1:将数组值连成字符串用  :: 隔开

  funciton appendCurrent(previousValue,currentValue){

      return previousValue+"::"+currentValue;

  }

var elements=["abc","def",123,456]

var result=elements.reduce(appendCurrent);

 document.write(result);//abc::def::123::456

例2:向数组中添加值,currentIndex,array用于回调函数

  function addDigitValue(previousValue,currentDigit,currentIndex,array){

     var  exponent=(array.length-1)-currentIndex;

    var digitValue=currentDigit*Math.pow(10,exponent);

    return  previousValue+digitValue;

     }

var  digits=[4,1,2,5];

var  result=digits.reduce(addDigitValue,0);

document.write(result);//4125

例3获取一个数组,该数组仅包含另一个数组中介于1~10之间的值,提供reduce方法的初始值为一个空数组

 function  Process(previousArray,currentValue){

   var nextArray;

   if(currentValue>=1&&currentValue<=10)

        nextArray=previousArray.concat(currentValue);

    else  

          nextArray=previousArray;

   return  nextArray;

  }

var  numbers=[20,1,-5,6,50,3];

var emptyArray=new Array();

var  resultArray=numbers.reduce(Process,emptyArray);

document.write(resultArray);//1,6,3

例4:

funciton appendCurrent(previousValue,currentValue){

      return previousValue+"::"+currentValue;

  }

var elements=["abc","def",123,456]

var result=elements.reduceRight(appendCurrent);

 document.write(result);//456::123::def::abc

Function

   function.bind(thisArg[,arg1[,arg2[,argN]]])

 

String

stringObj.trim()

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值