javascript - 数组元素替换
迷茫
迷茫 2017-04-11 10:43:37
[JavaScript讨论组]
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(9)
阿神

首先既然是把一个数组转成另一个数组,当然应该用map比较合适,其次涉及到字符串替换,可以用replace

id.map(function(str) {
    return str.replace(/[a- z0-9]/, function(match, pos) {
        return pos === str.length - 2 ? match : '*';
    });
});
PHP中文网
id.map(item => {
    return `**********************${item[item.length - 2]}*`
})
高洛峰
var id = [
    "574417bc79df540065d92df7",
    "574424e5df0eea0063adefc6",
    "57442329a3413100625f194f",
    "5744242bc4c971005d5ff04e",
    "574a841d1532bc006068c6c9",
    "574a97fe2b51e90056e423c0"
];

for (var i = id.length - 1; i >= 0; i--) {
    var substr = '';
    for(var j = id[i].length - 2; j > 0; j--){
        substr += '*';
    }
    id[i] = substr + id[i][id[i].length -2] + '*';
}
console.log(id);

我只能写到这样了。

高洛峰

很显然,正则啊,授人以鱼不如授人以渔。

怪我咯

可以用用map方法

   var id = [
       "574417bc79df540065d92df7",
       "574424e5df0eea0063adefc6",
       "57442329a3413100625f194f",
       "5744242bc4c971005d5ff04e",
       "574a841d1532bc006068c6c9",
       "574a97fe2b51e90056e423c0"
   ];
   var res = id.map(function (str) {
       return process(str)
   })
   console.log(res);
   function process(str) {
       var value = "";
       var length = str.length
       for (var i = 0; i <= length; i++) {
           if (i == str.length - 1) {
               value += str.charAt(length - 2);
           }
           else value += "*";
       }
       return value
   }
黄舟
 var id = [
        "574417bc79df540065d92df7",
        "574424e5df0eea0063adefc6",
        "57442329a3413100625f194f",
        "5744242bc4c971005d5ff04e",
        "574a841d1532bc006068c6c9",
        "574a97fe2b51e90056e423c0"
    ];
    for (var i = 0; i < id.length; i++) {
        var cur = "";
        for (var j = 0; j < id[i].length; j++) {
            if (j != (id[i].length - 2)) {
                cur+="*"
            }else {
                cur+=id[i][j];
            }
        }
        id[i]=cur;
    }
    console.log(id);
ringa_lee

ES2015对字符串的扩展方法很简单啊:

id.map(val => "*".repeat(val.length - 3) + val.slice(-2, -1) + "*")
阿神

好像真的有点长,求教怎么用正则处理更好:

var id = [
    '574417bc79df540065d92df7',
    '574424e5df0eea0063adefc6',
    '57442329a3413100625f194f',
    '5744242bc4c971005d5ff04e',
    '574a841d1532bc006068c6c9',
    '574a97fe2b51e90056e423c0'
];

var arr = id.map(item => item.substring(0, item.length - 2) + '*' + item.substring(item.length - 1));

console.log(arr);
//[ '574417bc79df540065d92d*7',
// '574424e5df0eea0063adef*6',
// '57442329a3413100625f19*f',
// '5744242bc4c971005d5ff0*e',
// '574a841d1532bc006068c6*9',
// '574a97fe2b51e90056e423*0' ]
黄舟
id.map(function(item,index){
    return item.replace(/\w/g,function(a,b,c){
        if(b==c.length-2)return a; 
        return '*'
    })
});
或
id.map(function(item,index){
    return item.replace(/^(\w+)(\w)\w$/,function(all,item1,item2){
        return item1.replace(/\w/g,'*')+item2+"*";
    })
})
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号