小编bru*_*sby的帖子

如何在不扩展为列表的情况下减少(...) JavaScript Map 对象的条目?

似乎没有好的标准库方法来做这样的事情?

let thismap = new Map([[1,2],[2,3]])
console.log(thismap.entries().reduce((prev, [a,b])=>prev + a * b, 0))
Run Code Online (Sandbox Code Playgroud)

Uncaught TypeError: thismap.entries(...).reduce is not a function

我认为这是由于 Entry() 函数返回迭代器所致?我不想这样做Array.from(thismap.entries()).reduce(...),因为这会不必要地在内存中构建数组。感觉好像我错过了一些东西,但我也不想重新实现应该在标准库中的东西。

我想如果我使用一个对象来代替(由于其他原因,这里不是一个令人满意的解决方案),entries() 本质上将是一个数组扩展而不是迭代器(尽管我认为它可以在考虑到内存效率的情况下实现)。但我仍然想知道如何减少迭代器

javascript dictionary functional-programming

9
推荐指数
2
解决办法
2748
查看次数

在 Lisp 中,如果值不是包含所有整数键和值的哈希表,您是否可以构造一个“检查类型”来抛出错误?

假设我有一个功能:

(defun distribution-to-list (distribution)
  (check-type distribution hash-table)
  (loop for key being each hash-key of distribution
    using (hash-value value) nconc (loop repeat value collect key)))
Run Code Online (Sandbox Code Playgroud)

我想确保至少传入的哈希表的所有值都是整数,因为我使用它们将值重复到一个大列表中。check-type有什么办法可以在内循环之前做到这一点吗?或者让内部循环宏在尝试repeat字符串时抛出类型错误是否足够好?(或任何非整数类型)

lisp common-lisp

3
推荐指数
1
解决办法
91
查看次数