Javascript 映射项传递操作?
我希望能够从地图上快速获取条目集。但是Javascript 映射项传递操作?,javascript,coding-style,code-cleanup,Javascript,Coding Style,Code Cleanup,我希望能够从地图上快速获取条目集。但是entries函数返回一个迭代器。那不是我想要的。当然,我可以编写一个函数来遍历条目并将其构建到条目集,但最好让我的函数说: return map.entries(); 而不是 return buildEntriesArray(map); 除了将迭代器问题包装成一堆针对各种不一致的迭代器/条目集API cruft的修饰调用之外,似乎没有一种干净的方法来编码迭代器问题 let a = [["foo.com", 32], ["bar.foo.com", 12
entries
函数返回一个迭代器。那不是我想要的。当然,我可以编写一个函数来遍历条目并将其构建到条目集,但最好让我的函数说:
return map.entries();
而不是
return buildEntriesArray(map);
除了将迭代器问题包装成一堆针对各种不一致的迭代器/条目集API cruft的修饰调用之外,似乎没有一种干净的方法来编码迭代器问题
let a = [["foo.com", 32], ["bar.foo.com", 12]];
let m = new Map(a);
// add to map, etc.
let entries = Object.entries(Object.fromEntries(m.entries()));
如何使它更干净?
[…迭代器]
用它创建数组…[…迭代器]
用它创建数组…也可以[…m.entries()]
。此外,如果您正在寻找干净、可读的代码,请始终使用const
,尽可能不要使用let
-let
警告读者您可能正在重新分配变量名。let
不会警告您可能正在重新分配变量名。事实上,如果词法环境记录上已经存在绑定,let
声明将导致错误var a=1;设a=2;//错误```我是从代码读取器的角度讲的-无论何时使用let
,您都在告诉正在阅读代码的人您可能正在重新分配变量。解释器警告/错误与此无关。当您改用const
时,代码的读取器的认知开销较小。你考虑的重新声明与重新分配不是一回事。重新分配只需要=
赋值运算符。@Garrett您混淆了重新分配和重新分类。分配变量只是给它一个值x=1
重新分配就是给它一个新值x=2
。就这样let
允许您重新分配值。重新声明试图创建一个同名的新变量let x;let x
是一个重新声明。也可以[…m.entries()]
。此外,如果您正在寻找干净、可读的代码,请始终使用const
,尽可能不要使用let
-let
警告读者您可能正在重新分配变量名。let
不会警告您可能正在重新分配变量名。事实上,如果词法环境记录上已经存在绑定,let
声明将导致错误var a=1;设a=2;//错误```我是从代码读取器的角度讲的-无论何时使用let
,您都在告诉正在阅读代码的人您可能正在重新分配变量。解释器警告/错误与此无关。当您改用const
时,代码的读取器的认知开销较小。你考虑的重新声明与重新分配不是一回事。重新分配只需要=
赋值运算符。@Garrett您混淆了重新分配和重新分类。分配变量只是给它一个值x=1
重新分配就是给它一个新值x=2
。就这样let
允许您重新分配值。重新声明试图创建一个同名的新变量let x;设x
为重新声明。
let entries = Array.from(m.entries());