搜集一些群里看到的代码。
为秀而秀,一行走天下
- 是
f(x)
如果x=1
就true
,0
就false,undefined
回''
,其他都undefined
- 参与群友:
霜霜家 💕 小迷妹 💕-Pomo(资深 c lang java lang 开发,算法工程师,深度学习开发
湿鸡 - 叉叉(资深前端专家)
写作星空,读作 NASA(资深前端、React 开发工程师,高级游戏玩家)
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);
```