JavaScript Snippets

JavaScript Snippets

信息

收集的一些常用的 JavaScript 代码片段

将给定字符串中每个单词的首字母转为大写

js
const capitalizeWord = (string) =>
  string.replace(/\b[a-z]/g, (char) => char.toUpperCase());

console.log(capitalizeWord("hello world in javascript")); // Hello World In Javascript

计算给定字符串的字节长度

js
const byteSize = (string) => new Blob([string]).size;

console.log(byteSize("vivy")); // 4
console.log(byteSize("潮鸣")); // 6

将数组元素转换为指定的 HTML 元素,主要用于将数据转换为界面 HTML 格式

js
const arrayToHtmlList = (array, tag = "li") =>
  array.map((item) => `<${tag}>${item}</${tag}>`).join("");

console.log(arrayToHtmlList(["第一条", "第二条"])); // <li>第一条</li><li>第二条</li>
console.log(arrayToHtmlList(["第一条", "第二条"], "p")); // <p>第一条</p><p>第二条</p>

多个数值求平均值

js
const average = (...nums) =>
  nums.reduce((acc, val) => acc + val, 0) / nums.length;

const ages = [23, 56, 15, 28];
// 此代码也展示了函数如何传递不定参数(使用 ES6 扩展运算符)
console.log(average(...ages)); // 30.5
console.log(average(23, 56, 15, 28)); // 30.5

计算 map 数组按照指定 key 的平均值,也可以给定一个迭代函数

js
const averageBy = (array, fn) =>
  array.map(typeof fn === "function" ? fn : (val) => val[fn]).reduce((acc, val) => acc + val, 0) / array.length;
const users = [
  { name: "saber", size: 23 },
  { name: "vivy", size: 56 },
  { name: "tico", size: 15 },
  { name: "k423", size: 28 },
];
const average1 = averageBy(users, (item) => item.size);
const average2 = averageBy(users, "size");
console.log(average1); // 30.5
console.log(average2); // 30.5

封装 localStorage

js
const useStorage = (storageKey = "authorization") => {
  const localKey = `devpoint.local.${storageKey}`;
  const save = (data) => {
    window.localStorage.setItem(localKey, JSON.stringify(data));
  };
  const get = () => {
    const localData = window.localStorage.getItem(localKey);
    if (localData && localData !== "") {
      return JSON.parse(localData);
    } else {
      return false;
    }
  };
  const clear = () => {
    window.localStorage.setItem(localKey, "");
  };
  return { save, get, clear };
};
const storageAuth = useStorage();
const loginInfo = {
  username: "vivy",
  age: 18,
};
storageAuth.save(loginInfo);
console.log(storageAuth.get());

计算数组中某个值的重复次数

js
const countOccurrences = (array, value) =>
  array.reduce(
    (accumulator, current) =>
      current === value ? accumulator + 1 : accumulator,
    0
  );

console.log(countOccurrences([..."vivy"], "v")); // 2
console.log(countOccurrences([1, 3, 3, 4, 3, 3, 2, 3], 3)); // 5

检查值是否属于某个数据类型

js
const isCheck = (type, val) =>
  ![undefined, null].includes(val) && val.constructor === type;

console.log(isCheck(Array, ["a"])); // true
console.log(isCheck(Object, {})); // true
console.log(isCheck(ArrayBuffer, new ArrayBuffer())); // true
console.log(isCheck(Boolean, new Boolean(true))); // true
console.log(isCheck(RegExp, /./g)); // true
console.log(isCheck(Number, 0)); // true

遍历对象的每个属性,并分别为每个属性迭代一个回调

js
const forObject = (obj, callback) =>
  Object.keys(obj).forEach((key) => callback(obj[key], key, obj));

const testObj = {
  word: "信じる心があなたの魔法〜",
  author: "篝敦子",
};
forObject(testObj, (val, key) => {
  console.log(`${key}:${val}`);
});
// word:信じる心があなたの魔法〜
// author:篝敦子

通过键值查找对象,返回满足给定函数的第一个 key

js
const findKey = (obj, fn) =>
  Object.keys(obj).find((key) => fn(obj[key], key, obj));

const testObj = {
  vivy: { age: 17 },
  k423: { age: 18 },
  saber: { age: 19 },
};

console.log(findKey(testObj, (item) => item.age > 18)); // saber

将一组数据按照指定的 key 的进行分组,并按照分组进行归类

浅析 Promise、Async/Await
第三方应用授权:OAuth 2.0

评论区

评论加载中...