JavaScript数组的forEach、map和angular.forEach

项目中用ng1.5,经常需要遍历数组,而angular.forEach则是首选,在脱离angular以后遍历数组的时候就想到了forEach和map,用法怪怪的。先点出情景“确保字符串的每个单词首字母都大写,其余部分小写”,即从数据显示在页面上的时候需转为首字母大写,其余小写的格式。

我直接敲出的代码是酱紫的,没想到这么小知识也有易错点。

function titleCase(str) {
     var temp=str.split(" ");
      temp.forEach(function(value,index,arr){
         value= value.charAt(0).toUpperCase()+value.substring(1).toLowerCase();
       });
      return temp.join(" ");
    }
console.log(titleCase("I'm a little tea pot")); 

可是发现代码并没有发生变化,正确的打开方式是通过第三个参数arr和index来给它赋值

temp.forEach(function(value,index,arr){
   arr[index]= value.charAt(0).toUpperCase()+value.substring(1).toLowerCase();
  });

注意: 没有办法中止或者跳出 forEach 循环,除了抛出一个异常。如果你需要这样,使用forEach()方法是错误的,你可以用一个简单的循环作为替代。如果您正在测试一个数组里的元素是否符合某条件,且需要返回一个布尔值,那么可使用 Array.every 或 Array.some。
angular.forEach和forEach是一个样子,用了这么久竟然才发现,只不过写法不同。map写法也可以

function titleCase(str) {
     var temp=str.split(" ");
      // temp.forEach(function(value,key,arr){
      //   arr[key]= value.charAt(0).toUpperCase()+value.substring(1).toLowerCase();
      // });

      // angular.forEach(temp,function(value,key){
      //   temp[key]= value.charAt(0).toUpperCase()+value.substring(1).toLowerCase();
      // });

     temp=temp.map(function(value,key,arr){
        return value.charAt(0).toUpperCase()+value.substring(1).toLowerCase();
      });
      return temp.join(" ");
    }
    console.log(titleCase("I'm a little tea pot"));

这里map的时候原数组的每一项在遍历的时候会返回它经过运算以后的值,这时候注意,原数组是不受影响的,所有return的值必须赋值给一个新的数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值