Skip to content

一些看上去很厉害的 JavaScript 代码示例

Published: at 09:22 PMSuggest Changes

搜集一些群里看到的代码。

为秀而秀,一行走天下

var r = (_) => ([false, true][_] === undefined ? '' : [false, true][_]);

a === 1 ? true : a === 0 ? false : undefined;

var a = (_) => {
  return_ === undefined ? _ : Boolean(_);
};

var a = { 0: false, 1: true };

递归处理树(我也不知道怎么描述)

// 数据
let data = {
  a: 1,
  b: 2,
};

// 详细信息
let list = {
  a: { c: 3, d: 4 },
  b: 2,
  c: { d: 4, e: 5 },
  d: 4,
  e: 5,
};

// 期望递归处理后得到结果
let out = {
  a: { c: { d: 4, e: 5 } },
  b: 2,
};

实现

function resolve(params, list) {
  const res = {};
  for (const key in params) {
    if (Object.prototype.hasOwnProperty.call(params, key)) {
      if (typeof list[key] == 'object') {
        res[key] = resolve(list[key], list);
      } else {
        res[key] = list[key];
      }
    }
  }
  return res;
}

resolve(data, list);

按规格排序

假设我们有属性 颜色 工种 天气 三个属性,这三个属性是不会排序的,现在属性下有很多子类 [黑色,白色][工人白领][天晴下雨],而他们的子类和属性进行组合,就变成了:黑色工人天晴,黑色工人下雨,黑色白领天晴,黑色白领下雨……等等,这里的排序指的是,会给黑色工人下雨这些值 sort,如果黑色 sort 最大,那么黑色就会在最前面,然后再根据工人的 sort 排

用的权重法解决的问题

let arr = [
    {
        xx: 1,
        children: [
            {
                name: "黑色",
                sort: 2
            },
            {
                name: "大人",
                sort: 1
            },
        ]
    },
    {
        xx: 1,
        children: [
            {
                name: "黑色",
                sort: 2
            },
            {
                name: "小孩",
                sort: 2
            },
        ]
    },
    {
        xx: 1,
        children: [
            {
                name: "白色",
                sort: 3
            },
            {
                name: "大人",
                sort: 1
            },
        ]
    },
    {
        xx: 1,
        children: [
            {
                name: "白色",
                sort: 3
            },
            {
                name: "小孩",
                sort: 2
            },
        ]
    },
    {
        xx: 1,
        children: [
            {
                name: "绿色",
                sort: 1
            },
            {
                name: "大人",
                sort: 1
            },
        ]
    },
    {
        xx: 1,
        children: [
            {
                name: "绿色",
                sort: 1
            },
            {
                name: "小孩",
                sort: 2
            },
        ]
    }
]

arr.map((item) => {
    const w = item.children.reduce((sum, child, i) => {
        sum += Math.pow(10, item.children.length - i) * child.sort;
            return sum;
        }, 0);

        return {
            ...item,
            weight: w,
        };
    })
    .sort((a, b) => b.weight - a.weight);

```

Previous Post
Webpack 5 配置 Vue 脚手架问题及解决方法
Next Post
使用 JavaScript 向页面插入 CSS 代码