将对象添加到现有对象数组 - JavaScript

2024-03-04

我创建了一个包含 2 个对象的数组,我希望编写一个“添加”函数来动态地将更多人添加到该数组中。

您能解释一下为什么下面的“add”函数没有成功地将对象添加到“contacts”数组中吗?

var bob = {
    firstName: "Bob",
    lastName: "Jones",
    phoneNumber: "(650) 777-7777",
    email: "[email protected] /cdn-cgi/l/email-protection"
};

var mary = {
    firstName: "Mary",
    lastName: "Johnson",
    phoneNumber: "(650) 888-8888",
    email: "[email protected] /cdn-cgi/l/email-protection"
};

var contacts = [bob, mary];
var contactsLength = contacts.length;

function add (firstName, lastName, phoneNumber, email) {
    contacts[contactsLength] = {
        firstName: firstName,
        lastName: lastName,
        phoneNumber: phoneNumber,
        email: email
    };
};


function printPerson(person) {
    console.log(person.firstName + " " + person.lastName);
}

function list() {
    for (var i = 0; i < contactsLength; i++) {
        printPerson(contacts[i]);
    }
}

add("MJ", "Foster", "MJ@gmail", "714-333-5555");

list();

您的代码未按您认为应有的方式工作的原因是由于这一行:

var contactsLength = contacts.length;

在这里,您分配的值contacts.length到变量contactsLength,但此后,contactsLength即使你的大小也不会改变contacts数组变化。

相反,您应该简单地引用该属性contacts.length.

这是您的代码的更正版本:

var bob = {
    firstName: "Bob",
    lastName: "Jones",
    phoneNumber: "(650) 777-7777",
    email: "[email protected] /cdn-cgi/l/email-protection"
};

var mary = {
    firstName: "Mary",
    lastName: "Johnson",
    phoneNumber: "(650) 888-8888",
    email: "[email protected] /cdn-cgi/l/email-protection"
};

var contacts = [bob, mary];

function add (firstName, lastName, phoneNumber, email) {
    contacts[contacts.length] = {
        firstName: firstName,
        lastName: lastName,
        phoneNumber: phoneNumber,
        email: email
    };
};


function printPerson(person) {
    console.log(person.firstName + " " + person.lastName);
}

function list() {
    for (var i = 0; i < contacts.length; i++) {
        printPerson(contacts[i]);
    }
}

add("MJ", "Foster", "MJ@gmail", "714-333-5555");

list();

请注意:使用原生数组方法push(),会做完全相同的事情contacts[contacts.length] = {...}.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将对象添加到现有对象数组 - JavaScript 的相关文章

随机推荐

  • jQuery UI datepicker:如何将下拉列表中的月份名称从短名称更改为长名称?

    我需要将月份名称从短名称更改为长名称在我的 jQuery UI 日期选择器中 我的属性是 datepicker regional de prevText x3c zur uuml ck nextText vor x3e monthNames
  • 在 Android Studio 中检查元素

    我们如何检查 android studio 中的元素 日食的对应物是Ctrl Shift I 选择变量或表达式后 按Ctrl Shift I 在网上找不到这个 请帮忙 In Mac OSX you can use command optio
  • 我可以使用常量名称的变量来访问 PHP 类常量吗? [复制]

    这个问题在这里已经有答案了 当访问类常量时 我 发现可以使用变量作为类名 例如 classname CONST VALUE 如果我想使用变量作为常量名称怎么办 例如self constant 这似乎不起作用 有解决方法吗 variable
  • Google OAuth 2.0 增量授权不起作用

    我有一个服务器端应用程序 需要访问 Google API 的组合 对于我们应用程序的某些用户 我们只需要访问一个 API 一组范围 例如 Google Drive 对于其他用户来说 需要访问另一个 API 范围 例如G 对于某些我们需要访问
  • 将 json 字符串反序列化为对象 - Silverlight

    今天下午我花了很长时间尝试在字符串中实现 JSON 的反序列化 一开始我使用的是数据契约Json序列化器因为我的环境是 Silverlight 但它似乎不支持使用开箱即用的字典 在许多其他问题中提出 作为替代方案 我决定暂时使用 JSON
  • openpyxl python 中自定义系列标题

    我正在尝试修改现有的 xlsx 表并使用 python 中的 openpyxl 模块向其中添加图形 但是在创建折线图时 系列标题显示为系列 1 系列 2 系列 3 系列 4 因为我需要将系列标题重命名为 A B C D 注意 该名称不是从任
  • ListView findViewById 返回 null

    我没有使用 ListActivity 因为我想扩展 FragmentActivity 相反 我尝试使用 ListView lv ListView findViewById R id mainListView 不幸的是 lv 为空 在我的 x
  • 如果是 JPG 图像,QLabel() 将不会加载像素图

    我想有一个QLabel 显示一个pixmap文件中的 JPG 图像 不能位于资源文件中 因为它是从网络下载的 但我在加载它时遇到问题 代码相当简单 label QLabel label setPixmap QPixmap image jpg
  • Promise 链与 Promise.all

    我的任务是使用量角器输入通知日期 我需要在输入之前清除内容 所以我想出了这个代码 this Then I should enter Notification Date gt const d new Date return orderChec
  • 如何更新 Visual Studio 的“用于验证的级联样式表版本”

    在我的 Visual Studio 2010 中 用于验证的级联样式表版本 针对的是 CSS 版本 2 1 如何更新 VS 以定位 CSS 版本 3 我刚刚下载并安装了 Mojtaba kaviani 的 CSS 3 智能感知架构 http
  • Opencv 矩阵乘法

    我需要将矩阵及其转置相乘 但出现以下错误 OpenCV Error Assertion failed type B type type CV 32FC1 type CV 64FC1 type CV 32FC2 type CV 64FC2 i
  • Flutter:任务“:app:compileDebugKotlin”执行失败

    我尝试运行默认的颤动应用程序颤动创建在我的 Android 设备上 但它引发了一个错误 有人可以帮忙吗 在调试模式下在 SM G610F 上启动 lib main dart 运行 Gradle 任务 assembleDebug 失败 构建失
  • 创建 backref 时 SQLAlchemy 关系引发参数错误

    我正在尝试建立一对多的关系 以便每个咖啡馆都可以有很多评论 然而 SQLAlchemy 提出了一个ArgumentError定义关系时 我该如何修复这个错误 class Review db Model id db Column db Int
  • 我可以使用 HTML 输入类型“日期”仅收集年份吗?

    我有一个字段需要从用户那里收集年份 即具有年份分辨率的日期 为了便于存储 我更愿意存储实际的日期值而不是数字 我想使用现代浏览器支持的日期输入 UI 或webshims https afarkas github io webshim dem
  • 删除分组 UITableView 中的角阴影/偏移

    当 UITableViewStyleGrouped 类型的 UITableView 的背景视图是 iPad 上的非默认颜色或图案图像时 圆角会有一条丑陋的额外线条 有点像斜角效果或投影 有谁知道有什么方法可以消除表格底部的多余线条吗 iPa
  • 在新窗口中打开 html 链接,没有浏览器工具栏

    我知道我可以使用 target blank 在新窗口中打开 html 链接 但是 如何隐藏 禁用所有浏览器工具栏 你应该使用window open url to open window name toolbar no
  • 最好的java jabber客户端库[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 您对 java jabber 库有哪些好的 坏的经历 我有过非常好的经验Smack http www igniterealtime org pr
  • Ruby 是如何实现完全面向对象的?

    所以 我很好奇 Ruby 为什么是一种完全面向对象的语言 我偶然发现了一个我不太清楚的问题 如果我定义一个函数如下 def foo text print text end 我在类之外定义了该函数 那么该函数如何成为对象 我意识到我可以打电话
  • 了解基本的 SQL 查询

    我有一个查询 例如 SELECT tran number FROM table a WHERE customer id IN SELECT customer id FROM table b WHERE customer key 89564
  • 将对象添加到现有对象数组 - JavaScript

    我创建了一个包含 2 个对象的数组 我希望编写一个 添加 函数来动态地将更多人添加到该数组中 您能解释一下为什么下面的 add 函数没有成功地将对象添加到 contacts 数组中吗 var bob firstName Bob lastNa