循环发送数据?

时间:2018-01-28 17:42:52

标签: vue.js vuejs2

我使用emit传递一些数据,它的记录为:

[__ob__: Observer]

但我想循环我的数据结构:

users:
            {
                'names': [],
                'addresses': [],
            }

循环通过名称然后地址。

但是当我尝试这样做时,我得到了:

Error in render: "TypeError: this.users.forEach is not a function"

1 个答案:

答案 0 :(得分:0)

您显示的users数据是一个对象,而不是一个数组,因此它没有forEach方法。

该对象包含两个数组,namesaddresses。也许你打算迭代这些数组?假设this.users是对users对象的有效引用,您可以执行以下操作:

this.users.names.forEach( function( name ) {
    // Do stuff with name
});

this.users.addresses.forEach( function( address ) {
    // Do stuff with address
});

users.namesusers.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

但是,如果namesaddresses数组 是这样的1:1对应关系,我建议您重建users数据能够做到这一点。

而不是users是包含两个并行数组的对象,make users是数组,其中此数组的每个元素都包含nameaddress属性。这样,用户的所有数据都被组合在一起以便于访问。如果您添加其他用户字段,例如phoneemail

,这将特别有用



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 );
});




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