如何解决JavaScript:为什么[object Array]不能与fori of array一起迭代
我有一个奇怪的问题。我想用for (let i=0;i<arr.length;i++)
代替for( const[key,val] of arr)
但我遇到错误.for is not iterable
当我用Object.prototype.toString.call(arr)
检查数组时,我得到了[object Array]
我不是坚持使用该表格,而是想了解为什么会这样:
我的数组看起来像(对象数组):
[
{
fieldname: 'files',originalname: 'User Manual 3.0.pdf',encoding: '7bit',mimetype: 'application/pdf',buffer: <Buffer 25 50 44 46 2d 31 2e 37 0d 0a 25 b5 b5 b5 b5 0d 688657 more bytes>,size: 688707
}
]
解决方法
for( const[key,val] of arr)
尝试使用
-
arr
(for-of
部分)的迭代器,可以;和 -
由#1(
[key,val]
部分)产生的每个值的迭代器,这是不合适的,因为它们是不可迭代的对象
如果要以arr
形式遍历key,value
中对象的属性,则需要Object.entries
:
for (const entry of arr) {
for (const [key,value] of Object.entries(entry)) {
// ...
}
}
(或for-in
,如果要包括继承的属性。)
实时示例:
const arr = [
{
fieldname: 'files',originalname: 'User Manual 3.0.pdf',encoding: '7bit',mimetype: 'application/pdf',/*
buffer: <Buffer 25 50 44 46 2d 31 2e 37 0d 0a 25 b5 b5 b5 b5 0d 688657 more bytes>,*/
size: 688707
}
];
for (const entry of arr) {
for (const [key,value] of Object.entries(entry)) {
console.log(key,value);
}
}
如果您只想从arr
中的对象中获得特定的属性,则可以使用对象分解而不是可迭代的分解:
for (const {fieldname,originalname} of arr) {
console.log(`fieldname = ${fieldname},originalname = ${originalname}`);
}
实时示例:
const arr = [
{
fieldname: 'files',*/
size: 688707
}
];
for (const {fieldname,originalname = ${originalname}`);
}
,
您无法通过迭代数组直接访问JSON键值对。如T.J所述,您需要迭代数组,然后迭代对象中的键值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。