javascript - 向对象添加条目

标签 javascript php arrays

一个 php 脚本正在计算以下数组:

$test = Array();
$test['a'] = Array();
$test['a']['a1'] = 'a1';
$test['a']['a2'] = 'a2';
$test['b'] = Array();
$test['b']['b1'] = 'b1';
$test['b']['b2'] = 'b2';

我正在使用以下方法将该数组转换为 JSON:

echo json_encode($test);

我正在使用 Ajax 调用检索此 JSON,并使用以下方法将其转换为 JavaScript 数组:

test = JSON.parse(data);

我的问题是:如何在 JavaScript 中向该数组添加条目? 我试过:

test['c'] = [];
test['c']['c1'] = 'c1';
test['c']['c2'] = 'c2';

但随后在控制台中 test['c'] 为空 (Array[0])。

最佳答案

在此之后:

test = JSON.parse(data);

您不再处理 JSON; test 是一个对象

...and I'm turning this it into a JavaScript array using...

您不是将其转换为 JavaScript 数组,而是将其转换为 JavaScript 对象。 JavaScript 最接近 PHP 的“关联数组”的是对象,而不是数组。

要为对象添加属性,您只需分配给它们。在您的情况下,您正在尝试创建一个名为 c 的属性,该属性是一个具有其他属性的对象。由于我们在 JavaScript 中使用对象而不是数组,因此您将使用 {} 而不是 [] 创建 c。例如:

test['c'] = {};
test['c']['c1'] = 'c1';
test['c']['c2'] = 'c2';

或更简洁:

test.c = {};
test.c.c1 = 'c1';
test.c.c2 = 'c2';

甚至更多简明扼要:

test.c = {
    c1: 'c1',
    c2: 'c2'
};

你所做的起作用,因为普通的 JavaScript 数组 are really objects因此您可以向它们添加任意的非元素属性,并以更“正常”的方式使用它们。但在正常情况下,您会改用非数组对象。

But then in the console test['c'] is empty (Array[0])

那是因为控制台向您展示了对象的类数组方面,而忽略了非数组方面。但是 test['c'] didc1c2 属性,只是控制台没有显示它们给你。尽管如此,如果您有特定原因,请仅对数组使用非索引属性名称。否则,再次使用非数组对象。

关于javascript - 向对象添加条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33494791/

相关文章:

javascript - JSON 通信破坏特殊字符

javascript - 如何在 ExtJS 中单击按钮打开模式

javascript - javascript 中所有可能的组合 - 为什么使用 pop()?

javascript - 将 json 数据输入 html 表

php - 需要向 html 表添加一个删除按钮,以通过一条消息从数据库中删除记录

javascript - 如何在不按回车键的情况下进行搜索

php - fatal error : Class 'Imagick' not found

arrays - 将垂直切片插入数组

php - 将多数组放入mysql

c - 在 C 中,为什么 (int*)&x[k] 对于二维数组 x 和 (int*)x[k] 一样好用?