在MDN文档中:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of
用于。。。of构造被描述为能够在“iterable”对象上迭代。但是有没有一个好的方法来决定一个对象是否是可移植的呢?
我试图找到数组、迭代器和生成器的公共属性,但无法做到这一点。
除了为。。。检查try块中的,并检查类型错误,是否有干净的方法?
为什么这么罗嗦?
const isIterable = object =>
object != null && typeof object[Symbol.iterator] === 'function'
最简单的解决办法其实是这样的:
function isIterable (value) {
return Symbol.iterator in Object(value);
}
Object
将非对象的任何内容封装在一个对象中,允许in
操作符工作,即使原始值不是对象null
和undefined
被转换为空对象,因此不需要进行边缘大小写检测,字符串被包装成可编辑的字符串对象。
检查易位性的正确方法如下:
function isIterable(obj) {
// checks for null and undefined
if (obj == null) {
return false;
}
return typeof obj[Symbol.iterator] === 'function';
}
为什么这样做(深入了解iterable协议):https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Iteration_protocols
既然我们谈论的是。。当然,我认为,我们正处于ES6心态。
另外,当字符串在其字符上迭代时,如果obj
是一个字符串,那么这个函数返回true
也不要感到惊讶。
我有一个函数需要一个iterable: 在javascript中,我将利用: 取自Tomas Kulich的原始答案。 这将导致下一个代码: 有没有一种方法可以利用TypeScript的打字功能而不是使用这个即时功能?
问题内容: 我正在使用AndEngine将精灵添加到屏幕上,并使用movemodifier方法遇到。 我有两个整数MaxDuration和MinDuration; 我想要做的是当用户达到一定增量的分数时。 例如,当用户达到20(整数改变)时,用户达到40(整数改变)。因此,基本上是20分,每次得分遇到一个20分之一的数字,即整数的变化。我希望这是有道理的。 有什么方法或方法可以做到这一点吗?我有一
问题内容: 我正在寻找一种找出模块是否可用的方法。 例如,我想以编程方式检查该模块是否可用。 另外,如果没有找到模块,它也不应停止程序,我想自己处理。 PS:我添加了这个问题,因为Google并没有帮助。 问题答案: 如果您只想检查模块是否可用(如果不可用则不加载),还有一种更聪明的方法:
所以,我正在尝试检查用户是否在某个消息中被@过。这就是我目前拥有的: (它包装在客户端中。当检测到消息发送时) 我在这里做错了什么?
问题内容: 试一试无用的东西只是看看此代码是否引发了特定的异常,这是一个好方法吗? 我想在引发异常时做点什么,否则就什么也不做。 有太多的先决条件要测试,构造函数BigDecimal()始终检查所有条件,因此这似乎是最简单的方法。 问题答案: 通常,应避免这种做法。但是,由于没有实用程序方法,所以这是要走的路。 正如Peter Tillemans在评论中指出的那样,将此代码放在称为的实用程序方法中
问题内容: 我知道我可以这样做: 然后只需编写语句中所需的代码。 还有其他方法可以检查它们是否相等? 问题答案: 怎么了 if(!Arrays.equals(array1,array2)) 与相同,即是同一数组。这不是大多数人期望的。 比较数组的内容。