出现首次加载数组为空的情况 中间加载路径为空的情况 为空的时候后面一个不是最上面的状态
两个有序数组合并:
代码:
function mergeArr(arr1, arr2) {
let m = arr1.length;
let n = arr2.length;
let len1 = arr1.length - 1;
let len2 = arr2.length - 1;
let len = m + n - 1;
while (len1 >= 0 && len2 >= 0) {
arr1[len--] = arr1[len1] > arr2[len2] ? arr1[len1--] : arr2[len2--];
}
if (len1 < 0) {
for (let i = 0; i <= len2; i++) {
arr1[i] = arr2[i];
}
}
}
let arr1 = [1, 1, 2, 3, 5, 6];
let arr2 = [1, 2, 5, 8, 9];
mergeArr(arr1, arr2);
console.log(arr1);
两数之和:
代码:
function numsOfTwoNumbers(nums, target) {
let map = new Map();
for (let i = 0; i < nums.length; i++) {
let k = target - nums[i];
if (map.has(k)) {
return [i, map.get(k)];
}
map.set(nums[i], i);
}
return [];
}
console.log(numsOfTwoNumbers([1, 2, 4, 6, 7, 8, 9, 4], 15));
扁平化数据结构转tree
1,tree转line(递归)
let tree = {
text: '一级', // 要显示的文本
value: 1, // 唯一值
checked: false, // 选中转态
children: [{
text: '二级-1',
value: 11,
checked: false,
}, {
text: '二级-2',
value: 12,
checked: false,
}]
}
const result = [];
function treeToLine(tree, treeKey, isRoot = true, root = null) {
if (!tree) return result;
const obj = {};
for (const key in tree) {
if (tree.hasOwnProperty(key) && key !== 'children') {
obj[key] = tree[key];
}
}
obj.parent = isRoot ? null : root[treeKey];
result.push(obj);
if (!tree.children) return result;
for (const child of tree.children) {
treeToLine(child, treeKey, false, tree);
}
return result;
}
2,line转tree:
let tree = [{
text: '一级',
value: 1,
checked: false,
disabled: false,
showSign: true,
parent: null
},
{
text: '二级-1',
value: 11,
checked: false,
disabled: false,
parent: 1
},
{
text: '三级-1',
value: 111,
checked: false,
disabled: false,
parent: 11
},
{
text: '二级-2',
value: 12,
checked: false,
disabled: false,
parent: 1
}];
function lineToTree(data, key = "value", parent = "parent") {
let tree = {};
const children = "children"
const dataMap = {}
data.forEach(v => {
dataMap[v[key]] = v
});
data.forEach(v => {
const par = dataMap[v[parent]];
if (v[parent]) {
!par[children] && (par[children] = [])
par[children].push(v)
} else {
tree = v;
}
})
return tree;
}
console.log(lineToTree(tree));