V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  ouxch  ›  全部回复第 1 页 / 共 2 页
回复总数  31
1  2  
又在 V 站发现了不得了的东西😆
@rcg1997 #1141 已申请😆
又在 V 站发现了不得了的东西😆
好像发现了不得了的东西😮
求码试用 YXdlc29tZW94Y0BnbWFpbC5jb20= 😄
350 天前
回复了 MindYoga 创建的主题 问与答 一元机场.com 是不是挂了?
@azbcem 填了你的码
351 天前
回复了 ouxch 创建的主题 Apple 2023 年了, iPhone 怎么电话录音?
@meisen #1 体验如何,能自动开启吗?
352 天前
回复了 hlwjia 创建的主题 推广 抽奖送 5 份《海外远程工作指南》
01
已领,感谢
12 R7TTNT67F4F9 已用,感谢分享👍🏻
2022-03-03 08:38:28 +08:00
回复了 shuxhan 创建的主题 问与答 6500 以内预算的笔记本?
6500 以内,不考虑 mba 的话,推荐楼主看看『华为 MateBook 13s 云杉绿』
2022-01-03 14:24:47 +08:00
回复了 tomari 创建的主题 分享发现 求有趣的中文 podcast(播客)推荐?
无聊斋
2022-01-03 14:24:25 +08:00
回复了 tomari 创建的主题 分享发现 求有趣的中文 podcast(播客)推荐?
最笨的办法当然就是写几个条件分支来组装最终的查询条件,例如:

```javascript
const filter = { nickname: { $regex: nicknameReg } }
if (!!id) fiter._id = ObjectId(id)
if (!!status) fiter.status = status
const findList = await userModel.find(filter)
```

---

其实这是一个如何让编码更加优雅的问题,不只适用于此处你这个问题,如果从事`JavaScript`开发,建议了解下函数式编程,这里以函数式编程库 [ramda]( https://ramda.cn/) 为例,看看写出来又是怎样的:

<br/>

首先定义一个通用的纯函数 `omitNil`

```javascript
const { reject, isNil } = require('ramda')
const omitNil = reject(isNil)
```

做个解释:

`isNil` 和 `reject` 都是 **ramda** 直接提供的函数,并且 **ramda** 的函数都是自动柯里化的;
`isNil` 的作用:检测输入值是否为 `null` 或 `undefined`;
`reject` 的作用:可视为 `filter` 的补操作,简言之 `filter` 是留下满足条件的元素、`reject` 是排除满足条件的元素;

将 `reject` 和 `isNil` 进行组合,得到 `omitNil` 函数,它的作用是:排除掉值为 `null` 或 `undefined` 的元素


做一个简单直观的测试,看看 `omitNil` 函数的作用:

```javascript
const obj = { a: 1, b: null, c: undefined }
omitNil(obj) // => { a: 1 }
obj // => { a: 1, b: null, c: undefined }

const arr = [1, null, undefined]
omitNil(arr) // => [ 1 ]
arr // => [1, null, undefined]
```

可以看到,`omitNil` 的返回值和输入参数相比,少了值为 `null` 或 `undefined` 的元素,并且没有修改原输入参数

<br/>

**现在回到楼主的问题**,就可以一行代码实现了:

```javascript
const findList = await userModel.find(omitNil({ nickname: { $regex: nicknameReg }, _id: id, status }))
```

<br/>

最后,**ramda** 的核心设计理念就包含了:数据不变性和函数无副作用,因此以上纯函数均不会改变输入参数的值。

<br/>

> 参考:
>
> https://ramda.cn
>
> https://ramdajs.com/
2021-12-31 13:27:36 +08:00
回复了 182247236 创建的主题 MySQL MySQL 查询数据太慢了,该怎么优化?
初看这个问题,从已提供的信息来看,只修改 sql 应该就能得到很大的优化,对索引调整可进一步优化。
如不介意提供下:表结构语句、行数、期望输出、数据库实例(所在机器)的 CPU 核心数和内存大小
2021-11-04 14:44:48 +08:00
回复了 CaptainD 创建的主题 机械键盘 键盘选择, TTC or 阿米洛静电容
在上家公司也用过一段时间阿米洛的静电容,第一次体验蛮惊艳的。
换了家公司这边的后台程序员清一色 NIZ plum ,感觉就是之前的阿米洛也不算啥了。现在这键盘直接提升我打字的欲望。
2021-08-25 13:13:15 +08:00
回复了 pkoukk 创建的主题 问与答 Edge 的新标签突然多出了一块狗皮膏药,有人知道怎么关掉嘛
1. 开发者模式打开,装 adblock plus 插件,点击插件选择捕获元素,然后就一直屏蔽了
2. 如果系统设置了代理的话,可以加 rule,把广告相关的请求都 reject

另外这个狗皮膏药我几个月前就遇到了,怎么这几天就突然讨论多了起来,V 站已经看到 3 个相关的主题了😂
2021-07-04 10:40:04 +08:00
回复了 acrisliu 创建的主题 iOS 吐槽一下 iOS 的 Files 应用
1. 自带的 files 确实难用
2. 你用的 nplayer 我也用过,后来发现一个更好用的 infuse,特别是传文件特好用,上几张图看看
https://i.loli.net/2021/07/04/D7lsUb2TIYVGHp9.png
2021-07-03 12:22:55 +08:00
回复了 tesorouo 创建的主题 问与答 Ngrok 有哪些同等用户体验的替代?
frp,灵活自由,有 dashboard,小水管体验没那么好;
teamviewer,稳定流畅,免费 license 限制设备数量;
utools 的内网穿透插件,操作简单带宽够大,一段时间无连接后会自动断开。
2021-06-27 22:12:10 +08:00
回复了 nowheretoseek 创建的主题 问与答 javascript 这么写有什么意义?
@nowheretoseek
哈哈我前不久也在公司 node 项目里看到这样的代码,lint 报了一个警告,我问遍了项目组的人都没人知道这写法啥意思,原来是老大以前写的。
Google 了一下'nodejs return comma',出来的第一个就是这个:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Comma_Operator
逗号操作符 对它的每个操作数求值(从左到右),并返回最后一个操作数的值。
跟 return 没啥关系,就是 js 支持的一种写法:逗号分割的表达式从左到右依次求值,并返回最后一个表达式的值。
可以让代码更简洁,不过不推荐这种写法,不然 lint 也不会警告了😄。
1  2  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2424 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 39ms · UTC 16:08 · PVG 00:08 · LAX 09:08 · JFK 12:08
Developed with CodeLauncher
♥ Do have faith in what you're doing.