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] }));