Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript-数组的有线行为_Javascript_Arrays - Fatal编程技术网

JavaScript-数组的有线行为

JavaScript-数组的有线行为,javascript,arrays,Javascript,Arrays,我有一个奇怪的Array_Push()行为。我正在将数组添加到预定义数组中。问题是,由于某种原因,当我将数组推到预定义数组时,数组的长度增加了两倍 以下是代码: 示例阵列: Object {id: 2, firstName: "First name", lastName: "Last name", phones: Array[0], emails: Array[0]…}$$hashKey: "00A"address: "Street 3"city: "Washington "emails: Ar

我有一个奇怪的Array_Push()行为。我正在将数组添加到预定义数组中。问题是,由于某种原因,当我将数组推到预定义数组时,数组的长度增加了两倍

以下是代码:

示例阵列:

Object {id: 2, firstName: "First name", lastName: "Last name", phones: Array[0], emails: Array[0]…}$$hashKey: "00A"address: "Street 3"city: "Washington "emails: Array[0]firstName: "First name"id: 2lastName: "Last name"notes: "No notes"phones: Array[0]__proto__: Object
JavaScript:

var contacts = [
        {
            id: 0,
            firstName: 'John',
            lastName: 'Doe',
            phones: [{'phone1': '222222222'}],
            emails: [{'email1': 'example@mail.com'}],
            address: 'Some Streetz 2.',
            city: 'Las Vegas',
            notes: 'Napomena',
        },
        {
            id: 1,
            firstName: 'Mike',
            lastName: 'Smith',
            phones: [{'phone1':'111111'}],
            emails: [{'email1': 'example@mail.com'}],           
            address: '459 5th Av.',
            city: 'New York',
            notes: 'Napomena',
        }
    ];
将阵列添加到联系人阵列

this.addContact = function (contact) {

        alert (contacts.length);//output is 2
        contact.id = contacts.length ++;//getting ID od new array
        console.log(contact);//
        contacts.push(contact);
                        alert ("++"+contacts.length);//output is 4

                console.log(contacts);

    };

contacts.length++
增加数组的长度,本质上相当于
contacts.push(未定义)
。然后添加另一个元素


contact.id=contacts.length
是正确的选择。如果您需要“一个大于长度”(您不需要),
contact.id=contacts.length+1
将是正确的写入方式。

不要在length属性上使用一元
++
!作为猜测,我想说您阅读了一些教程,其中包括在添加元素时增加长度计数器,但是JavaScript数组的内部实现为我们解决了这一问题。无需使用length++,当您使用push()操作数组时,数组将自动更新length属性。您是正确的@DanielA.White。Amadan在评论中建议这样做,所以我修正了这个错误。