解决使用 ES8 的 Object.values() 方法时的错误提示 “TypeError: 1 is not Iterable”

在前端开发中,我们经常需要使用 JavaScript 的 Object 对象来存储和操作数据。而在 ES8 中,新增了 Object.values() 方法,可以方便地获取一个对象中所有的值。但是在使用该方法时,有时会遇到错误提示 “TypeError: 1 is not Iterable”,该错误提示是因为该方法只能接收可迭代对象(iterable)作为参数,而非单一的数字或字符串等。本文将介绍如何解决这个错误提示,以及如何正确地使用 Object.values() 方法。

解决 TypeError: 1 is not Iterable 错误提示

首先,需要了解什么是可迭代对象(iterable)。在 JavaScript 中,可迭代对象指的是具有 Symbol.iterator 属性的对象,该属性返回一个迭代器(iterator)对象。迭代器对象具有 next() 方法,每次调用该方法都会返回一个包含 value 和 done 两个属性的对象,其中 value 表示当前迭代的值,done 表示是否已经迭代完所有值。

而 Object.values() 方法只能接收可迭代对象作为参数,因此如果传入的参数不是可迭代对象,就会出现 “TypeError: 1 is not Iterable” 的错误提示。例如:

----------------- -- ---------- - -- --- --------

要解决这个错误提示,需要确保传入的参数是可迭代对象。可以使用 Array.from() 方法将一个类数组对象或可迭代对象转换为数组,然后再使用 Object.values() 方法。例如:

----- --- - - -- -- -- - --
----- ------ - ------------------------------- -- --- --

这样就可以正确地获取一个对象中的所有值了。

Object.values() 方法的使用

除了解决错误提示外,还需要了解如何正确地使用 Object.values() 方法。

Object.values() 方法接收一个对象作为参数,返回一个包含该对象中所有值的数组。例如:

----- --- - - -- -- -- - --
----- ------ - ------------------- -- --- --

该方法返回的数组顺序与对象中属性的顺序一致。如果对象中有非字符串的属性名,则会将其转换为字符串。例如:

----- --- - - -- ---- -- --- --
----- ------ - ------------------- -- ----- ----

如果传入的参数不是对象,则会出现 “TypeError: (intermediate value) is not iterable” 的错误提示。例如:

----------------------- -- ---------- ------------- ------ -- --- --------

正确的做法是将字符串转换为数组,然后再使用 Object.values() 方法。例如:

----- ------ - ----------------------------------- -- ----- ---- ---- ---- ----

总结

本文介绍了如何解决使用 ES8 的 Object.values() 方法时的错误提示 “TypeError: 1 is not Iterable”,以及如何正确地使用该方法。要避免出现错误提示,需要确保传入的参数是可迭代对象,可以使用 Array.from() 方法将其转换为数组。Object.values() 方法可以方便地获取一个对象中所有的值,返回的数组顺序与对象中属性的顺序一致。如果传入的参数不是对象,则需要先将其转换为数组或可迭代对象。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65d2bcb9add4f0e0ffb0ac12