- map()和forEach()的遍历方法使用区别
map有返回值,不需要重新定义一个变量。
#推荐用法:
http.get('url').then((res) => {
this.productOptionsList = res?.result?.map((val) => {
return {
label: val.name,
value: {
appName: val.name,
userName: ''
}
}
})
})
#!不推荐
const appObjs = []
this.addForm.appNames?.map(item => {
let obj = {
appName: item.appName || '',
isDelete: 0,
userName: this.addForm.roleName
}
appObjs.push(obj)
})
- 适用于map,不适用于forEach,两者不混用。
this.addForm.roles?.forEach((item, index) => {
this.addForm.roles[index].userName = this.addForm.userName
item?.appObjs?.map((val, inx) => {
this.addForm.roles[index].appObjs[inx].userName = this.addForm.userName
})
})
- splice增加
arr.splice(index, 1)
arr.splice(index, 0, obj)
- 双层遍历可用递归写法
let paramsID = this.addForm.id ? 'update' : 'add'
this.addForm.roles?.forEach((item, index) => {
this.addForm.roles[index].userName = this.addForm.userName
item?.appObjs?.map((val, inx) => {
this.addForm.roles[index].appObjs[inx].userName = this.addForm.userName
})
})
const tree = [{
name: "小红",
children: [{
name: "小黄",
relation: "情侣",
children: [{
name: "小绿",
relation: "同学",
children: [{
name: "小青",
relation: "同学"
}]
}]
}]
}]
var datalist = [];
function recursion(datas) {
for (let item of datas) {
if (Array.isArray(item.children)) {
doObj(item.children)
}
datalist.push({
name: item.name
});
break;
}
}
recursion(tree)
console.log(datalist)
- 根据id和pid把json结构 转 树状结构(转载)
const jsonData = [
{ id: '0', pid: '-1', name: '666' },
{ id: '4', pid: '1', name: '大家电' },
{ id: '5', pid: '1', name: '生活电器' },
{ id: '1', pid: '0', name: '家用电器' },
{ id: '2', pid: '0', name: '服饰' },
{ id: '3', pid: '0', name: '化妆' },
{ id: '7', pid: '4', name: '空调' },
{ id: '8', pid: '4', name: '冰箱' },
{ id: '9', pid: '4', name: '洗衣机' },
{ id: '10', pid: '4', name: '热水器' },
{ id: '11', pid: '3', name: '面部护理' },
{ id: '12', pid: '3', name: '口腔护理' },
{ id: '13', pid: '2', name: '男装' },
{ id: '14', pid: '2', name: '女装' },
{ id: '15', pid: '7', name: '海尔空调' },
{ id: '16', pid: '7', name: '美的空调' },
{ id: '19', pid: '5', name: '加湿器' },
{ id: '20', pid: '5', name: '电熨斗' },
{ id: '21', pid: '20', name: '电熨斗子项' },
];
const transData = (jsonArr, idStr, pidStr, childrenStr) => {
const result = [];
const id = idStr;
const pid = pidStr;
const children = childrenStr;
const len = jsonArr.length;
const hash = {};
jsonArr.forEach(item => {
hash[item[id]] = item;
});
for (let j = 0; j < len; j++) {
const jsonArrItem = jsonArr[j];
const hashItem = hash[jsonArrItem[pid]];
if (hashItem) {
!hashItem[children] && (hashItem[children] = []);
hashItem[children].push(jsonArrItem);
} else {
result.push(jsonArrItem);
}
}
return result;
};
const jsonDataTree = transData(jsonData, 'id', 'pid', 'children');
console.log(jsonDataTree)
- 数据兜底
addFormList() {
return this.addForm.roles?.filter(item => item.isDelete !== 1)
}
http.get('url').then((res) => {
this.roleIds = res.result.roleIds || ['TOURIST']
this.tabNames = res.result.tabNames || []
this.activeName = res.result.tabNames?.[0]
- 清空参数的简单方法
直接设置某些参数值为undefined
let paramsID = this.addForm.id ? 'update' : 'add'
const keysList = Object.keys(this.addForm)
keysList.includes('appNames') && delete this.addForm.appNames
keysList.includes('roleTempId') && delete this.addForm.roleTempId
this.addForm.roles?.forEach((item, index) => {
this.addForm.roles[index].userName = this.addForm.userName
item?.appObjs?.map((val, inx) => {
this.addForm.roles[index].appObjs[inx].userName = this.addForm.userName
})
})
this.addForm.appNames = undefined
this.addForm.roleTempId = undefined