希希莱娜 2020-05-08 09:30 采纳率: 64.3%
浏览 1119
已采纳

求教大神js如何修改数组对象中字符串的值

我设置这样一个数组

let aaa = [
{
    type:'硬币',
    useSum:'12000',
    remainSum:'0',
    basicSum:'0',
    useDate:'2019-05-14'},
{
    type:'纸币',
    useSum:'120000',
    remainSum:'10000',
    basicSum:'/',
    useDate:'2019-05-14'
}
]

传过来的金额为分,我想将它修改为元

 let bbb = [
 {
    type:'硬币',
    useSum:'120.00',
    remainSum:'0.00',
    basicSum:'0.00',
    useDate:'2019-05-14'
    },
 {
     type:'纸币',
     useSum:'1200.00',
     remainSum:'100.00',
     basicSum:'/',
     useDate:'2019-05-14'
     }
 ]

我修改数组数据,本来想直接把useSum,remainSum,basicSum直接转为数字
但是它可能返回‘/’,我应该这么设置,用正则吗

  • 写回答

3条回答 默认 最新

  • little_how 2020-05-08 11:00
    关注
    • 方案一:不改变原始数组的值达到替换效果
    let util = {
        /**
         * 原始数组不被修改,将返回一个新数组,新数组只有指定切换的属性和原始数组不一致
         * @param arr  - 需要置换的数组,此方法将直接在原始数组上修改数据
         * @param keys - 需要处理的对象属性
         *
         * @return - 返回一个新数组
         */
        convert : function(arr, keys) {
            if (keys instanceof Array) {
                keys = new this.Set(keys);
            }
            let me = this;
            let newArray = [];
            arr.forEach(function(v) {
                let newObject = {};
                newArray.push(newObject);
                for (let o in v) {
                    let vv = v[o];
                    if (keys.contains(o)) {
                        vv = me.dealDigital(vv);
                    }
                    newObject[o] = vv;
                }
            });
            return newArray;
        },
        dealDigital:function(orig) {
            if (orig.length === 1) {
                var value = this.zeroMap[orig];
                if (value) return value;
                return "0.0" + orig;
            } else if (orig.length === 2) {
                return "0." + orig;
            } else {
                return orig.substring(0, orig.length - 2) + "." + orig.substring(orig.length - 2);
            }
        },
        Set:function(arr) {
            if (this instanceof util.Set) {
                this.map = {};
                let me = this;
                arr.forEach(function(o) {
                    me.map[o] = true;
                });
                this.contains = function(key) {
                    return this.map[key];
                }
            } else {
                return new util.Set(arr);
            }
        },
        zeroMap : {"/":"0.00", "0":"0.00"}
    };
    
    
    //数据
    let aaa = [
        {
            type:'硬币',
            useSum:'12000',
            remainSum:'0',
            basicSum:'0',
            useDate:'2019-05-14'},
        {
            type:'纸币',
            useSum:'120000',
            remainSum:'10000',
            basicSum:'/',
            useDate:'2019-05-14'
        }
    ];
    
    //测试调用
    let bbb = util.convert(aaa, ["useSum", "remainSum", "basicSum"]);
    
    //打印,得到想要的目标
    console.log(bbb);
    //aaa无任何变化
    console.log(aaa);
    
    • 方案二:直接在原始数组上改变
    let util = {
        /**
         * 原始数组将被修改,并且返回原始数组
         * @param arr  - 需要置换的数组,此方法将直接在原始数组上修改数据
         * @param keys - 需要处理的对象属性
         *
         * @return 返回原始数组arr
         */
        convert : function(arr, keys) {
            if (keys instanceof Array) {
                keys = new this.Set(keys);
            }
            let me = this;
            arr.forEach(function(v) {
                for (let o in v) {
                    if (keys.contains(o)) {
                        v[o] = me.dealDigital(v[o]);
                    }
                }
            });
            return arr;
        },
        dealDigital:function(orig) {
            if (orig.length === 1) {
                var value = this.zeroMap[orig];
                if (value) return value;
                return "0.0" + orig;
            } else if (orig.length === 2) {
                return "0." + orig;
            } else {
                return orig.substring(0, orig.length - 2) + "." + orig.substring(orig.length - 2);
            }
        },
        Set:function(arr) {
            if (this instanceof util.Set) {
                this.map = {};
                let me = this;
                arr.forEach(function(o) {
                    me.map[o] = true;
                });
                this.contains = function(key) {
                    return this.map[key];
                }
            } else {
                return new util.Set(arr);
            }
        },
        zeroMap : {"/":"0.00", "0":"0.00"}
    };
    
    
    //数据
    let aaa = [
        {
            type:'硬币',
            useSum:'12000',
            remainSum:'0',
            basicSum:'0',
            useDate:'2019-05-14'},
        {
            type:'纸币',
            useSum:'120000',
            remainSum:'10000',
            basicSum:'/',
            useDate:'2019-05-14'
        }
    ];
    
    //测试调用
    let bbb = util.convert(aaa, ["useSum", "remainSum", "basicSum"]);
    
    //打印,得到想要的目标
    console.log(bbb);
    //aaa已经被改变
    console.log(aaa);
    

    希望对你有帮助

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!