已根据每个浏览器对String#reverse的10 种实现进行了分析。
自 2011 年以来,这些实施方式已得到解释。
当ES6到来时,有很多代码变得更加优雅和性能 。
关于字符串反转,我想知道ES6是否支持它。
不管怎样,我最终得到了这个语法:
reverse=(str)=>[...str].reverse().join('');
Run Code Online (Sandbox Code Playgroud)ES6/ES7 是否有内置 API 更优雅、更简洁、性能更好?
我需要检查状态是否被批准,所以我检查它是否为空。最有效的方法是什么?
回复
{
"id": 2,
"email": "yeah@yahoo.com",
"approved": {
"approved_at": "2020"
},
"verified": {
"verified_at": "2020"
}
}
Run Code Online (Sandbox Code Playgroud)
代码
const checkIfEmpty = (user) => {
if (Object.entries(user.verified).length === 0) {
return true;
}
return false;
};
Run Code Online (Sandbox Code Playgroud) 这是情况。我useEffect用来过滤一些数据,它运行良好。这是代码和代码和框。
const data = [
{name: 'aml', age: 10},
{name: 'abcb', age: 12},
{name: 'asr', age: 20},
{name: 'plo', age: 30},
{name: 'bvcq', age: 15},
{name: 'bfro', age: 21},
{name: 'zxwh', age: 19}
]
function App() {
const [keyword, setKeyword] = React.useState('')
const [result, setResult] = React.useState(data)
const [isAged, setIsAged] = React.useState(false)
const [isNameLength3, setIsNameLength3] = React.useState(false)
React.useEffect(() => {
const doSearch = () => {
// setResult(data)
if (isAged) {
setResult(result.filter(item => item.age >= 20)) …Run Code Online (Sandbox Code Playgroud) 我正在尝试节点身份验证,我已设法将用户名和散列密码存储到我的数据库中,但我想返回 json 而不带散列密码。
我在发回 JSON 之前删除了密码密钥,但密码仍然显示在返回的结果中。
router.post("/signup", async (req, res, next) => {
const user = await User.exists({ username: req.body.username });
if (user) {
const error = new Error("Username already exists");
next(error);
} else {
const newUser = new User({
username: req.body.username,
password: req.body.password,
});
try {
const result = await newUser.save();
delete result.password;
res.json(result);
} catch (err) {
res.json(err.errors);
}
}
});
Run Code Online (Sandbox Code Playgroud)
用户模型有一个预钩子,可以在保存之前对密码进行哈希处理:
userSchema.pre("save", async function save(next) {
const user = this;
if (!user.isModified("password")) return next();
try {
user.password …Run Code Online (Sandbox Code Playgroud) 我有一个具有一些属性的现有对象:
var props = {
filters: {
brightness: 0,
opacity: 1,
}
}
Run Code Online (Sandbox Code Playgroud)
因此,我想filter在变量声明期间将该对象的属性分配给另一个对象:
var sprite = {
configs: {
image: 'pic.png',
// <- assign `props.filters` right here
}
}
Run Code Online (Sandbox Code Playgroud)
结果我想得到这样的对象:
{
configs: {
image: 'pic.png',
brightness: 0,
opacity: 1,
}
}
Run Code Online (Sandbox Code Playgroud)
sprite我可以在变量声明后这样做:
Object.assign(sprite.configs, props.filters);
Run Code Online (Sandbox Code Playgroud)
但是是否可以在变量声明期间分配另一个对象的属性?
如果一个对象中有很多属性,JS 允许在变量声明期间实现这样的赋值,以消除多余的后处理,这将非常方便。
我有一组 JSON 对象。给定一个搜索字符串,我只想为那些将该字符串作为其属性之一的子字符串的对象过滤数组。我如何有效地做到这一点?
是否有 eslint 规则强制变量在块的顶部声明?该vars-on-top规则似乎只适用于var关键字,而不是我想要的(例如,它不允许for (var i = 0; ...)。这是一个人为的示例。
错误代码
doWork() {
const work = this.getWork();
if (work.isReady) { ... }
let workResult = work.getResult();
// ...
return workResult;
}
Run Code Online (Sandbox Code Playgroud)
好的代码
doWork() {
const work = this.getWork();
let workResult;
if (work.isReady) { ... }
workResult = work.getResult();
// ...
return workResult;
}
Run Code Online (Sandbox Code Playgroud) 所以我最近才开始潜心研究 Web 开发。我很快收集到的一件事是 ES5 = 旧的,而 ES6 = 闪亮的和新的。我认为 ES6 是最新和最好的 ES 必须提供的。但我刚刚发现 ES6 落后 3 个标准,而且我一直在使用和喜爱的一些功能甚至都不属于它的一部分——它们出现在后来的规范中。那么为什么我读到的所有内容都让人觉得只有 ES5 和 ES6?
ecmascript-6 ecmascript-next ecmascript-2016 ecmascript-2017 ecmascript-2018
为了从数组中删除对象,我可以使用以下代码找到我想要删除的对象:
this.data = this.data.filter(item => this.multipleSelectedIds.includes(item.id))
Run Code Online (Sandbox Code Playgroud)
但实际情况是我为this.data数组分配了我想要从中删除的所有对象.什么是ES6最佳实践逻辑来实现"排除"的类型,所以我得到的是所有id不存在的对象this.multipleSelectedIds而不是我现在拥有的正好相反的对象?
javascript ×7
ecmascript-6 ×6
eslint ×1
express ×1
json ×1
mongoose ×1
node.js ×1
object ×1
react-hooks ×1
reactjs ×1
reverse ×1
string ×1
variables ×1