JavaScript相关的算法题

编程入门 行业动态 更新时间:2024-10-07 06:38:56

JavaScript相关的<a href=https://www.elefans.com/category/jswz/34/1770096.html style=算法题"/>

JavaScript相关的算法题

移动零(美团)

原始值:[0, 1, 2, 0, 5, 8, 6, 0, 2, 7]
结果:[0, 0, 0, 1, 2, 5, 8, 6, 2, 7]

// 自己的解法:这个解法有问题,如下
function sortArray(list) {// 边界条件判断
//     if(list.length === 0) {
//         return list;
//     }const length = list.length;// 倒序遍历for(let i = length - 1; i > 0; i--) {// 判断是否为零数字if(list[i] === 0) {console.log('123')list.splice(i, 1); // 删除0元素list.unshift(0); // 在数组前面添加0// i++; 这个注意}}return list;
}sortArray([0, 1, 2, 0, 5, 8, 6, 0, 2, 7, 0, 0])// 面试官建议的解法:双指针
var moveZeroes = function(nums) {let slowIndex = 0;for (let fastIndex = 0; fastIndex < nums.length; fastIndex++) {if (nums[fastIndex] !== 0) {[nums[slowIndex], nums[fastIndex]] = [nums[fastIndex], nums[slowIndex]];slowIndex++;}}
};

对象扁平化(字节)

原始值:{ a: { b: { c: 1 } }, d: 2, e: [3, { f: 4, g: [5] }, [6, 7]], h: 8 }
输出:{ "a.b.c": 1, d: 2, "e[0]": 3, "e[1].f": 4, "e[1].g[0]": 5, "e[2][0]": 6, "e[2][1]": 7, h: 8 }

function flatten(obj) {let res = {};function flat(cur, key = '', isArray = false) {for (let [k, v] of Object.entries(cur)) {if(Array.isArray(v)) {let temp = isArray ? key + "[" + k + "]" : key + k;flat(v, temp, true);} else if(typeof v === 'object') {let temp = isArray ? key + "[" + k + "]." : key + k + ".";flat(v, temp);} else {let temp = isArray ? key + "[" + k + "]" : key + k;res[temp] = v}}}flat(obj);return res;
}

更多推荐

JavaScript相关的算法题

本文发布于:2023-12-03 23:33:35,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1658987.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:算法   JavaScript

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!