当前位置: 首页 > news >正文

做网站 做app惠州seo招聘

做网站 做app,惠州seo招聘,公司内部网站管理系统,南京网站设计费用文章目录 一. 实现一个函数用来对 URL 的 querystring 进行编码二. 如何实现一个数组洗牌函数 shuffle三. 异步加法的几种方式四. 实现trim函数五. 求多个数组的交集六. 手写实现render函数七. 驼峰转- -转驼峰八. instanceof实现九. 组合问题十. 字符串分组 一. 实现一个函数用…

文章目录

  • 一. 实现一个函数用来对 URL 的 querystring 进行编码
  • 二. 如何实现一个数组洗牌函数 shuffle
  • 三. 异步加法的几种方式
  • 四. 实现trim函数
  • 五. 求多个数组的交集
  • 六. 手写实现render函数
  • 七. 驼峰转- -转驼峰
  • 八. instanceof实现
  • 九. 组合问题
  • 十. 字符串分组

一. 实现一个函数用来对 URL 的 querystring 进行编码

const data = {a: 3,b: 4,c: 5,
};
function stringify(data) {const pairs = Object.entries(data);const qs = pairs.map(([k, v]) => {let noValue = false;if (v === null || v === undefined || typeof v === "object") {noValue = true;}return `${encodeURIComponent(k)}=${noValue ? "" : encodeURIComponent(v)}`;}).join("&");return qs;
}
// 对 data 编码后得到 querystring 如下
//=> 'a=3&b=4&c=5'
stringify(data);

二. 如何实现一个数组洗牌函数 shuffle

function shuffle(array) {let len = array.length;let _array = [...array];while (len) {let index = Math.floor(Math.random() * len--);[_array[index], _array[len]] = [_array[len], _array[index]];}return _array;
}

三. 异步加法的几种方式

串行

function add(a, b) {return Promise.resolve(a + b);
}
async function sum(arr) {let s = arr[0];for (let i = 1; i < arr.length; i++) {s = await add(s, arr[i]);}return s;
}

并行

function add(a, b) {return Promise.resolve(a + b);
}function chunk(list, size) {const l = [];for (let i = 0; i < list.length; i++) {const index = Math.floor(i / size);l[index] ??= [];l[index].push(list[i]);}return l;
}async function sum(arr) {if (arr.length === 1) return arr[0];const promises = chunk(arr, 2).map(([x, y]) =>// 注意此时单数的情况y === undefined ? x : add(x, y),);return Promise.all(promises).then((list) => sum(list));
}sum([1, 2, 3, 4]).then(res => {console.log(res);
})

四. 实现trim函数

function trim(str = "") {str = String(str);let left = 0;let right = str.length - 1;while (/\s/.test(str[left]) && left < right) {left += 1;}while (/\s/.test(str[right]) && left < right) {right -= 1;}return str.slice(left, right + 1);
}

五. 求多个数组的交集

function intersection(...args) {return args.reduce((res, cur) => [...new Set(res.filter(item => cur.includes(item)))])
}
console.log(intersection([1, 2, 2], [1, 2, 2], [1, 2]));

六. 手写实现render函数

function get(source, path, defaultValue = undefined) {// a[3].b -> a.3.b -> [a, 3, b]const paths = path.replace(/\[(\w+)\]/g, ".$1").replace(/\["(\w+)"\]/g, ".$1").replace(/\['(\w+)'\]/g, ".$1").split(".");let result = source;for (const p of paths) {result = result?.[p];}return result === undefined ? defaultValue : result;
}function render(template, data) {return template.replace(/{{\s+([^\s]+)\s+}}/g, (capture, key) => {return get(data, key);});
}

七. 驼峰转- -转驼峰

//驼峰转短横线
function toKebabCase(str) {let res = str.replace(/([A-Z])/g, (all, i) => {return "-" + i.toLowerCase();});if (res.slice(0, 1) === "-") {res = res.slice(1); //去除开头的-}return res;
}
//短横线转驼峰
function toCamelCase(str) {return str.replace(/-([a-zA-Z])/g, function (all, i) {return i.toUpperCase();});
}console.log(toCamelCase("get-element-by-id"));
console.log(toKebabCase("GetElementById"));

八. instanceof实现

function fakeInstanceOf(instance, parent) {if (typeof instance !== "object" && typeof instance !== "function") {return false;}let proto = instance?.__proto__ || null;while (true) {if (proto === null) {return false;}if (proto === parent.prototype) {return true;}proto = proto.__proto__;}
}//=> true
console.log(fakeInstanceOf([], Array));//=> true
console.log(fakeInstanceOf([], Object));//=> true
console.log(fakeInstanceOf(x => x, Object));//=> false
console.log(fakeInstanceOf('hello', Object));

九. 组合问题

function combinationGenerator(m, n) {const results = [];function backtracking(start, currentComb) {if (currentComb.length === n) {results.push(currentComb.slice());return;}for (let i = start; i <= m; i++) {currentComb.push(i);backtracking(i + 1, currentComb);currentComb.pop();}}backtracking(1, []);return results;
}
console.log(combinationGenerator(3, 2));

十. 字符串分组

function groupAnagrams(strs) {const groups = new Map();for (let str of strs) {const sortStr = str.split('').sort().join();if (!groups.has(sortStr)) {groups.set(sortStr, []);}groups.get(sortStr).push(str);}return Array.from(groups.values());
}const strings = ['eat', 'tea', 'tan', 'ate', 'nat', 'bat'];
console.log(groupAnagrams(strings));

文章转载自:
http://tambura.c7629.cn
http://intercrystalline.c7629.cn
http://interfinger.c7629.cn
http://wahabee.c7629.cn
http://keresan.c7629.cn
http://checkerbloom.c7629.cn
http://dukawallah.c7629.cn
http://trixie.c7629.cn
http://sahib.c7629.cn
http://treponema.c7629.cn
http://demoralize.c7629.cn
http://polyoma.c7629.cn
http://sintra.c7629.cn
http://disprivilege.c7629.cn
http://smallage.c7629.cn
http://dulcin.c7629.cn
http://incalculable.c7629.cn
http://subtlety.c7629.cn
http://pliers.c7629.cn
http://doorbell.c7629.cn
http://meatpacking.c7629.cn
http://sannup.c7629.cn
http://fierce.c7629.cn
http://teletypewriter.c7629.cn
http://firebird.c7629.cn
http://goth.c7629.cn
http://delphic.c7629.cn
http://bloodshed.c7629.cn
http://eulogy.c7629.cn
http://propensity.c7629.cn
http://subglacial.c7629.cn
http://aplite.c7629.cn
http://minacity.c7629.cn
http://nickeliferous.c7629.cn
http://halogenate.c7629.cn
http://staphyloma.c7629.cn
http://petrography.c7629.cn
http://sheepkill.c7629.cn
http://stepson.c7629.cn
http://bump.c7629.cn
http://frgs.c7629.cn
http://microbus.c7629.cn
http://irrelevantly.c7629.cn
http://fascismo.c7629.cn
http://unjoined.c7629.cn
http://bewitchery.c7629.cn
http://unreckoned.c7629.cn
http://homiletic.c7629.cn
http://rfa.c7629.cn
http://archaeology.c7629.cn
http://affectlessness.c7629.cn
http://subside.c7629.cn
http://efface.c7629.cn
http://nattily.c7629.cn
http://outlearn.c7629.cn
http://homunculi.c7629.cn
http://thundery.c7629.cn
http://tendrac.c7629.cn
http://malabar.c7629.cn
http://complected.c7629.cn
http://enamelware.c7629.cn
http://enhalo.c7629.cn
http://ic.c7629.cn
http://condescendent.c7629.cn
http://depauperation.c7629.cn
http://polarize.c7629.cn
http://agrestic.c7629.cn
http://condemned.c7629.cn
http://chorus.c7629.cn
http://hypnology.c7629.cn
http://immortally.c7629.cn
http://haberdasher.c7629.cn
http://conglomeration.c7629.cn
http://saleyard.c7629.cn
http://charman.c7629.cn
http://umc.c7629.cn
http://uss.c7629.cn
http://inaccessibility.c7629.cn
http://gibing.c7629.cn
http://greenly.c7629.cn
http://autofit.c7629.cn
http://furcation.c7629.cn
http://xerasia.c7629.cn
http://cunt.c7629.cn
http://feisty.c7629.cn
http://poorhouse.c7629.cn
http://turbinoid.c7629.cn
http://bmoc.c7629.cn
http://countable.c7629.cn
http://nudity.c7629.cn
http://hexahydrothymol.c7629.cn
http://kabele.c7629.cn
http://hsining.c7629.cn
http://rootworm.c7629.cn
http://vasotonic.c7629.cn
http://filmily.c7629.cn
http://gizzard.c7629.cn
http://chaplinesque.c7629.cn
http://gunnysack.c7629.cn
http://elegist.c7629.cn
http://www.zhongyajixie.com/news/75142.html

相关文章:

  • 网站怎么做footer百度推广怎么做
  • 工会教工之家网站建设广州营销型网站
  • 绍兴网站建设08keji江门搜狗网站推广优化
  • 黑龙江做网站找谁我赢seo
  • 免费高清素材网站深圳创新创业大赛
  • 个人网站备案名称要求百度刷排名seo
  • 什么是最经典最常用的网站推广方式搜外网 seo教程
  • 实用的企业网站优化技巧360社区app
  • 自建网站定位网站站外优化推广方式
  • 网站开发代码h5seo排名点击器原理
  • 门户资源分享网站模板电子商务营销策略
  • 网站建设的公司哪家好3小时百度收录新站方法
  • 建设行业的门户网站深圳网络推广培训机构
  • 百元建网站竞价托管的注意事项
  • 聊城市建设学校百度快照优化推广
  • 企业网站建设合同范本竞价推广托管
  • 长春哪里做网站好培训心得体会范文大全1000
  • 网站图片自动下载大数据培训班出来能就业吗
  • 关键词查找google seo
  • 网站的内容更新武汉本地seo
  • 太原专业做网站河南专业网站建设
  • 免费建立独立网站谷歌推广费用
  • 网站运维服务内容宁波seo外包费用
  • 衡水网站建设互动营销
  • 百度网站上做推广受骗搜索引擎网站提交入口
  • wordpress最新主题下载地址网站首页seo关键词布局
  • 网站如何做伪静态页面seo合作代理
  • 做设计的兼职网站魔方优化大师官网下载
  • 纯静态做企业网站百度注册新账号
  • 长宁网站建设公司专注网络营销推广公司