实用的方法

1、数组赋值给对象,并自定义key名
var arr = [1,2,3]
var obj = {}
    arr.forEach((item,index) => {
      obj["key" + index] = item
    })
    console.log(obj);
// key0: 1
// key1: 2
// key2: 3

2、获取数组中对象的每一项,重新合并后组成新的数组对象
var dataObj = {}
var newArr = []
var data = {
    a: [{ time: 1, value: 1 }, { time: 2, value: 2 }, { time: 3, value: 3 }],
    b: [{ time: 1, value: 1 }, { time: 2, value: 2 }, { time: 3, value: 3 }],
    c: [{ time: 1, value: 1 }, { time: 2, value: 2 }, { time: 3, value: 3 }]
  }
  for (var key in data) {
    for (var i in data[key]) {
      if (!dataObj[data[key][i].time]) {
        dataObj[data[key][i].time] = {}
        dataObj[data[key][i].time][key] = data[key][i].value
      } else {
        dataObj[data[key][i].time][key] = data[key][i].value
      }
    }
  }
  for (var item in dataObj) {
    var obj = JSON.parse(JSON.stringify(dataObj[item]))
    obj.time = item
    newArr.push(obj)
  }
  console.log(newArr)

3、统一修改对象字段名称
let aaa = [
    {
        "id":"1",
        "name":"内容1",
    },
    {
        "id":"2",
        "name":"内容2",
    }
]
let bbb = JSON.parse(JSON.stringify(aaa).replace(/name/g,"title"));
console.log(bbb)

4、数组去重
// 判断一个值去重
arrayUnique(arr, name) {
  let hash = {}
  return arr.reduce((acc, cru, index) => {
    if (!hash[cru[name]]) {
      hash[cru[name]] = { index: acc.length }
      acc.push(cru)
    } else {
      acc.splice(hash[cru[name]]['index'], 1, cru)
    }
    return acc;
  }, [])
},
                 // 去重的数组,去重的字段
this.arrayUnique(this.dataArr, 'detailId')


// 判断二个值去重
arrayBoth(arr) {
  // 缓存用于记录
  const cache = [];
  for (const t of arr) {
    // 检查缓存中是否已经存在  判断字段  自己设置
    if (cache.find(c => c.name === t.name && c.id === t.id)) {
    // 已经存在说明以前记录过,现在这个就是多余的,直接忽略
       continue;
    }
    // 不存在就说明以前没遇到过,把它记录下来
       cache.push(t);
    }
     this.data = cache  // 列表展示数据
  // 记录结果就是过滤后的结果
  return cache;
},
               // 去重的数组
this.arrayBoth(this.dataArr)


// ES6 数组去重 只能清除一些简单的格式
let filterData = [...new Set(this.dataArr)]

5、表单数据发生变化,但是显示没变化
// 强制刷新DOM 方法 
@change="$forceUpdate()"// 写在标签内
@click="$forceUpdate()" // 写在标签内
this.$forceUpdate()     // 写在方法内

// set 方法 改变原数组
// 三个参数:(需要改变的数据,位置,更改后的数据)
let aaa = [{lable:'数据1',value:'1'}]

this.$set(aaa, 0, { lable: '修改后的数据1', value: '1' })
// let aaa = [{lable:'修改后的数据1',value:'1'}]

// 也可以往数组里多放入数据
this.$set(aaa, 1, { lable: '数据2', value: '2' })
// let aaa = [{lable:'修改后的数据1',value:'1'}, { lable: '数据2', value: '2' }]

6、过滤数组中出现的 empty

数组中出现 empty(过滤前)

let dataArr  = []
dataArr = arr.filter(d => d) // 过滤数组中的 empty

(过滤后)

7、字符串类型数字 转 数字类型的数组
let array = '1,2,3,4,5,6'
console.log(array.split(',')) // 转为数组(字符串类型)
// ['1', '2', '3', '4', '5', '6',]
// 此时是字符串数组
console.log(array.split(',').map(Number)) // 转为数组(数字类型)
// [1, 2, 3, 4, 5, 6]
// 此时是数字类型数组

8、字符串数组  数字数组  互转 
字符串数组 转 数字数组
let  array = ['1','2','3']
array.map(Number) 
// [1,2,3]
数字数组 转 字符串数组
let  array = [1,2,3]
array.map(String) 
// ['1','2','3']
9、判断开始结束时间是否是在同一天
let timeType = false 
let dateA = new Date(startDate); // 开始时间
let dateB = new Date(endDate);   // 结束时间
timeType = dateA.setHours(0, 0, 0, 0) == dateB.setHours(0, 0, 0, 0)
console.log(timeType) // true 是同一天 false 不是同一天

10、2给数组嵌套对象合并成一个数组嵌套对象

let a = [
  { menuName: '菜单1', path: 'cd1' },
  { menuName: '菜单2', path: 'cd2' },
  { menuName: '菜单3', path: 'cd3' },
  { menuName: '菜单4', path: 'cd4' },
];

let b = [
  { num: 1},
  { num: 2},
  { num: 3},
  { num: 4},
];

let c = [...a].map((item, index) => ({ ...item, ...b[index] }));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值