我想做相当于这样的事情:
const arr = [{id: 1}, {id: 2}, {id: 3}];
const item = arr.find(v => v.id===2);
if (item) {
console.log(item);
}
是否有一个简写表达式可以让我既可以评估是否找到某个项目,又可以在 block 内使用该项目?
类似于:
if (const item = arr.find(v => v.id ===2) {
console.log(item);
}
最佳答案
是的,只需对代码进行简单的调整 - 将 item
更改为在 if
条件下声明于外部的 let
> 以便可以在条件下重新分配:
const arr = [{id: 1}, {id: 2}, {id: 3}];
// not actually necessary, but leaving it out will implicitly assign to global object:
let item;
if (item = arr.find(v => v.id ===2)) {
console.log(item);
}
也就是说,我不推荐它 - 分配给条件内的变量是一种代码味道。我更喜欢您的原始版本,其中 .find
在外部完成。
如果您愿意,您也可以为类似的事情创建自己的函数。函数定义并不小,但现在您可以简洁地调用它:
function findAnd(arr, condition, callback) {
const item = arr.find(condition);
if (item) callback(item);
}
const arr = [{id: 1}, {id: 2}, {id: 3}];
findAnd(arr, v => v.id === 2, item => console.log(item));
关于javascript - `if Array.find` 有简写吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52979845/