JavaScript-数组的有线行为
我有一个奇怪的Array_Push()行为。我正在将数组添加到预定义数组中。问题是,由于某种原因,当我将数组推到预定义数组时,数组的长度增加了两倍 以下是代码: 示例阵列: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
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在评论中建议这样做,所以我修正了这个错误。