js递归实现数组转化树状结构
function filterArray(data, parent) {
let vm = this;
var tree = [];
var temp;
for (var i = 0; i < data.length; i++) {
if (data[i].parent == parent) {
var obj = data[i];
temp = filterArray(data, data[i].id);
if (temp.length > 0) {
obj.subs = temp;
}
tree.push(obj);
}
}
return tree;
},
var list =[{
"id": 43,
"menu_name": "测试任务",
"menu_href": "6",
"menu_icon": "el-icon-lx-edit",
"tree_sort": 600,
"tree_level": 1,
"is_show": 1,
"status": 0,
"remarks": "",
"parent": null
},
{
"id": 44,
"menu_name": "待领样",
"menu_href": "waitGetSamples",
"menu_icon": "",
"tree_sort": 610,
"tree_level": 2,
"is_show": 1,
"status": 0,
"remarks": "",
"parent": 43
},
{
"id": 45,
"menu_name": "待测试",
"menu_href": "waitTest",
"menu_icon": "",
"tree_sort": 620,
"tree_level": 2,
"is_show": 1,
"status": 0,
"remarks": "",
"parent": 43
},
{
"id": 46,
"menu_name": "测试中",
"menu_href": "testInProcess",
"menu_icon": "",
"tree_sort": 630,
"tree_level": 2,
"is_show": 1,
"status": 0,
"remarks": "",
"parent": 43
},
{
"id": 47,
"menu_name": "数据审核",
"menu_href": "7",
"menu_icon": "el-icon-lx-punch",
"tree_sort": 700,
"tree_level": 1,
"is_show": 1,
"status": 0,
"remarks": "",
"parent": null
},
{
"id": 48,
"menu_name": "数据审理",
"menu_href": "dataAuditing",
"menu_icon": "",
"tree_sort": 710,
"tree_level": 2,
"is_show": 1,
"status": 0,
"remarks": "",
"parent": 47
},
{
"id": 49,
"menu_name": "异常处理",
"menu_href": "exceptionHandling",
"menu_icon": "",
"tree_sort": 720,
"tree_level": 2,
"is_show": 1,
"status": 0,
"remarks": "",
"parent": 47
},
{
"id": 50,
"menu_name": "样品异常",
"menu_href": "SamplesAbnormal",
"menu_icon": "",
"tree_sort": 721,
"tree_level": 3,
"is_show": 1,
"status": 0,
"remarks": "",
"parent": 49
},
{
"id": 51,
"menu_name": "测试数据异常",
"menu_href": "testDataException",
"menu_icon": "",
"tree_sort": 722,
"tree_level": 3,
"is_show": 1,
"status": 0,
"remarks": "",
"parent": 49
},
{
"id": 52,
"menu_name": "设备异常处理",
"menu_href": "deviceExceptionHandling",
"menu_icon": "",
"tree_sort": 723,
"tree_level": 3,
"is_show": 1,
"status": 0,
"remarks": "",
"parent": 49
}
]
console.log(filterArray(list))
返回最接近输入值的数字,如果有多个,返回最大的那个
返回最接近输入值的数字,如果有多个,返回最大的那个
lookup(array, value) {
// 将原数组复制,不会影响原数组
let arr = array.concat([]);
arr.push(value);
// 数据排序
arr.sort((a, b) => {
return a - b;
});
let index = arr.indexOf(value);
// 当前项在数组第一项 / 最后一项,返回当前项的后一项 / 前一项
if (index === 0) {
return arr[index + 1];
} else if (index === array.length - 1) {
return arr[index - 1];
}
// 当前项和前一项或者后一项比较,返回差值小的项
let resultIndex =
arr[index] - arr[index - 1] > arr[index + 1] - arr[index]
? index + 1
: index - 1;
return arr[resultIndex];
}