项目中常用到的一些数据操作

小数点计算求值不准解决办法

下面有几个例子

解决方法

parseFloat((a + b).toFixed(10))

 

1.数组初始化

需求:  后台返回一组数据,对这组数据标识选择或者不选中状态的时候

let selectedList=new Array(8).fill(false);

console.log(selectedList);   //[false, false, false, false, false, false, false, false]

2.复制一组数据

需求:  复制一组数据,并且再使用数组的方法时不会影响原数组数据的变化

这是一个错误的方法  直接赋值(数据会跟着变化)

 let arr=[1,2,3,4,5];
 let arrcopy=arr;
 arrcopy.push(6);
 console.log(arr)      //[1, 2, 3, 4, 5, 6]
 console.log(arrcopy)  //[1, 2, 3, 4, 5, 6]

下面是我常用的方法(只适用于简单的数组复制)

let arr=[1,2,3,4,5];
      let arrcopy=[...arr];
      arrcopy.push(6);
      console.log(arr)      //[1, 2, 3, 4, 5]
      console.log(arrcopy)  //[1, 2, 3, 4, 5, 6]

 

3.深拷贝对象数组(数组里的对象只能有一层)

 let arr = [{
            id: 1,
            val: 1
        }, {
            id: 1,
            val: 1
        }, {
            id: 1,
            val: 1
        }]
 
        let dong = [];
        arr.map(function (item, index, arr1) {
            dong.push(Object.assign({}, item))
        })
 
        dong[0].val = 2;
        dong.splice(1, 1)
        console.log(dong)
        console.log(arr)

5、深拷贝一个简单的对象

var obj = {a:1,b:2}  

//一下是方法   只针对一层的简单对象的深拷贝
var { ...newObj } = obj; 

var newObj=Object.assign({}, obj);




//拷贝没有特殊值的对象
var newObj = JSON.parse(JSON.stringify(obj));  

 

6、数组转字符串

需要将数组元素用某个字符连接成字符串,示例代码如下:

var a, b,c; 
a = new Array(a,b,c,d,e); 
b = a.join('-'); //a-b-c-d-e  使用-拼接数组元素
c = a.join(''); //abcde


 

7、字符串转数组

实现方法为将字符串按某个字符切割成若干个字符串,并以数组形式返回,示例代码如下:

var str = 'ab+c+de';
var a = str.split('+'); // [ab, c, de]
var b = str.split(''); //[a, b, +, c, +, d, e]

8、数组转成字符串拼接

    var arr = [{
            fieldName: "测试场地1",
            lipstickList: [{
                    lipstickCode: '设备1', //设备名称
                },
                {
                    lipstickCode: '设备2', //设备名称
                }
            ]
        },
        {
            fieldName: "测试场地2",
            lipstickList: [{
                    lipstickCode: '设备1', //设备名称
                },
                {
                    lipstickCode: '设备2', //设备名称
                }
            ]
        },
    ]

    //比方说要转成 场地1-设备1,设备2;场地2-设备1,设备2

    let res_str = "";
    arr.map((val, index) => {
        let res_str2 = "";
        val.lipstickList.map((val1, index1) => {
            res_str2 += val1.lipstickCode + ",";
        });

        res_str += val.fieldName + '-' + res_str2.substring(0, res_str2.length - 1) + ';'

    });
    console.log(res_str.substring(0, res_str.length - 1));

 

8、更改字符串里的文字

//把字符串里的至换成~符号
str.replace(/至/g,'~')

//把字符串里的-符号全部消除
str.replace(/-/g,'')

//字符串截取  开始下标   结束下标多1
str.substring(0, 4)

9、JSON字符串转换成对象

1.var obj = str.parseJSON();

2.var obj = JSON.parse(str);

10、JSON对象转化为JSON字符串。

1.var str=obj.toJSONString();

2.var str=JSON.stringify(obj);

注:小程序跳转传值想要传一个对象 可以先把对象转化成json字符串传送  然后由另一页面将json字符串转化为json对象

 

11、对象循环

const obj = {
            id:1,
            name:'zhangsan',
            age:18
}

//第一种方法
for(let key  in obj){

  console.log(key + '---' + obj[key])

}


//方法二
console.log(Object.keys(obj))   //["id", "name", "age"]
console.log(Object.values(obj))  //[1, "zhangsan", 18]

12、对象删除一个属性值

var bonly={
    name:'bonly',
    age:"18",
    weight:'70kg'
};


delete bonly['age'];

 

13、小数点计算精度问题

 var r2=Math.round((i*j)*1000)/1000;  

 

数组截取问题

slice方法

截掉前几位可以这样写

let arr=[1,2,3,4,5]

arr.slice(2)   //[3, 4, 5]

arr.slice的其他用法

arr.slice(2,4)  // [3, 4]

arr.slice(2,-1)  // [3, 4]

arr.slice(2,-2)  // [3]

 

splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。

     注释:该方法会改变原始数组。

index必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
howmany必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, ..., itemX可选。向数组添加的新项目。

 删除前几个

arr.splice(0,2)

添加一个元素

 

let arr=[1,2,3,4,5]
arr.splice(2,0,"5555")  //[]
arr  //[1, 2, "5555", 3, 4, 5]

在本例中我们将删除位于 index 2 的元素,并添加一个新元素来替代被删除的元素:

let arr=[1,2,3,4,5]
arr.splice(2,1,"2222222")  //[3]
arr  //[1, 2, "2222222", 4, 5]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值