一些数组和对象操作

104 阅读1分钟

拷贝

简单深拷贝

function deepClone2(obj) {
  var _obj = JSON.stringify(obj),
     objClone = JSON.parse(_obj);
  return objClone;
}  

lodash函数库实现深拷贝(需要npm下载lodash)

let result = _.cloneDeep(test)

当数组里面的值是基本数据类型,比如String,Number,Boolean时,属于深拷贝

var arr1 = ["1","2","3"];
var arr2 = arr1.concat();
arr2[1] = "9";
console.log("数组的原始值:" + arr1 );
console.log("数组的新值:" + arr2 );

当数组里面的值是引用数据类型,比如Object,Array时,属于浅拷贝

var arr1 = [{a:1},{b:2},{c:3}];
var arr2 = arr1.concat();
arr2[0].a = "9";
console.log("数组的原始值:" + arr1[0].a ); // 数组的原始值:9
console.log("数组的新值:" + arr2[0].a ); // 数组的新值:9

使用扩展运算符实现深拷贝

var car = {brand: "BMW", price: "380000", length: "5米"}
var car1 = { ...car, price: "500000" }
console.log(car1); // { brand: "BMW", price: "500000", length: "5米" }
console.log(car); // { brand: "BMW", price: "380000", length: "5米" }
//let obj = {x:1,y:2,z:3}
//let arr = Reflect.ownKeys(obj)
//let arr = Object.values(obj)
//let arr = Object.keys(obj)
//let arr = Reflect.has(obj,'a')
let arr = Object.entries(obj)
console.log(arr);

数组操作

数组去重

// let arr = [1,2,3,4,1,2,3]
// let setArr = new Set(arr)
// console.log(...setArr)

将数组变成逗号分隔字符串,输出效果为: "1,2,3,4,5,6,7,8"

let arr = [1,2,3,4,5,6,7,8]
arr.map(item=>item).join(',')

将逗号分隔的字符转成数组,输出效果为:["1", "2", "3", "4", "5", "6", "7", "8"]

let temp = '1,2,3,4,5,6,7,8' arr.split(',')

对象操作

获取对象里面value的值并转化成数组,输出结果为 ["张三", "18", "175"]

let obj = {
  name: '张三',
  age: '18',
  lang: '175'}
Object.values(obj)

获取对象里面key的值并转化成数组,输出结果为["name", "age", "lang"]

let obj = {
  name: '张三',
  age: '18',
  lang: '175'}
Object.keys(obj)