我使用emit传递一些数据,它的记录为:
[__ob__: Observer]
但我想循环我的数据结构:
users:
{
'names': [],
'addresses': [],
}
循环通过名称然后地址。
但是当我尝试这样做时,我得到了:
Error in render: "TypeError: this.users.forEach is not a function"
答案 0 :(得分:0)
您显示的users
数据是一个对象,而不是一个数组,因此它没有forEach
方法。
该对象包含两个数组,names
和addresses
。也许你打算迭代这些数组?假设this.users
是对users
对象的有效引用,您可以执行以下操作:
this.users.names.forEach( function( name ) {
// Do stuff with name
});
this.users.addresses.forEach( function( address ) {
// Do stuff with address
});
users.names
和users.addresses
是否为1:1对应关系,其中users.names[0]
和users.addresses[0]
均为同一用户,依此类推[1]
,[2]
等?在这种情况下,您可以使用:
this.users.names.forEach( ( name, i ) => {
let address = this.users.addresses[i];
// Do stuff with name and address
});
我在此处使用了箭头功能而不是常规function
来保留this
。
但是,如果names
和addresses
数组 是这样的1:1对应关系,我建议您重建users
数据能够做到这一点。
而不是users
是包含两个并行数组的对象,make users
是数组,其中此数组的每个元素都包含name
和address
属性。这样,用户的所有数据都被组合在一起以便于访问。如果您添加其他用户字段,例如phone
或email
:
let users = [
{
"name": "Mike",
"address": "California",
"phone": "510-555-0001",
"email": "mike@example.com"
},
{
"name": "Panthro",
"address": "Oregon",
"phone": "510-555-0002",
"email": "panthro@example.com"
}
];
users.forEach( function( user ) {
console.log( user.name, user.address, user.phone, user.email );
});

正如您所看到的,这种构建用户数据的方式可以轻松访问每个用户的各个数据字段。