Javascript 有人能解释一下如何在过滤方法中使用局部变量吗?
我读JavaScript时很有说服力,遇到了一个代码片段,它没有解释这是如何工作的Javascript 有人能解释一下如何在过滤方法中使用局部变量吗?,javascript,Javascript,我读JavaScript时很有说服力,遇到了一个代码片段,它没有解释这是如何工作的 let scripts = countBy(text,char => { let script = characterScript(char.codePointAt(0)) return script ? script.direction : "none"; }).filter(({name}) => name != "none") return scripts }
let scripts = countBy(text,char => {
let script = characterScript(char.codePointAt(0))
return script ? script.direction : "none";
}).filter(({name}) => name != "none")
return scripts
}
所以这就是我无法理解它是如何工作的,
.filter(({name})=>name!='none')
这是如何从函数中提取局部变量,并使用它根据该变量进行过滤的?为什么它必须在这些
({})
之间?它被称为对象解构:-名称
不是一个局部变量,它是传递给.filter
函数的对象的一个属性,然后自动解构以创建该名称的参数,请看,如果您后退一步并跳过分解,可能会更容易理解:.filter((countObject)=>countObject.name!=“none”)
function countBy(items, groupName) {
let counts = [];
for (let char of text) {
let name = groupName(item);
let known = counts.findIndex(c => c.name == name);
if (known == -1) {
counts.push({name, count: 1});
} else {
counts[known].count++;
}
}
return counts;
}