如何使用 JavaScript 更新或添加数组中的值
How to update or add value in an array using JavaScript?
我在JavaScript中使用的变量中有一个数组数组。我想使用子数组更新值,而不必临时复制数组。
下面是一个示例。
我有这个数组
var data= [{
'123': [{'a': 10, 'b': 20, 'c': 30, 'd': 40}],
'456': [{'a': 1, 'b': 2, 'c': 3, 'd': 4}]
}];
我希望能够更改 123 键内a
的值(如果存在a
)。否则,我想创建该密钥。另外,如果子数组中不存在"a",我想添加它而不是抛出错误。
我正在尝试更新
data['123']['assigned_at'] = 'value';
但由于assigned_at不存在,我收到此错误
无法设置
undefined
或null
引用的属性"assigned_at"。
如何正确更新阵列?
var data = [{
'123': [{
'a': 10,
'b': 20,
'c': 30,
'd': 40
}],
'456': [{
'a': 1,
'b': 2,
'c': 3,
'd': 4
}]
}];
data['123']['assigned_at'] = 'value';
你的问题不是assigned_at
不存在,而是data['123']
不存在,因此未定义。
试试data[0]['123']
。
顺便说一句:你似乎不理解数组和/或对象,因为你在每个数组中放了一个对象。
您可能想要最简单的数据形式,在这种情况下是JSON,因此括号是不必要的:
var data= {
'123': {'a': 10, 'b': 20, 'c': 30, 'd': 40},
'456': {'a': 1, 'b': 2, 'c': 3, 'd': 4}
};
现在您可以获得这样的项目:
data['123'];
// and the nested objects:
data['123']['a'];
你有一个包含一个 JSON 元素的数组,所以你可以使用以下代码得到它:
data[0]['123']
// and for the nested objects:
data[0]['123'][0]['a']
所以你的问题是你认为你正在使用哈希图,而实际上你使用的是数组。所以当你写这样的东西时:
var data= [{
'123': [{'a': 10, 'b': 20, 'c': 30, 'd': 40}],
'456': [{'a': 1, 'b': 2, 'c': 3, 'd': 4}]
}];
console.log(data["123"])
您将收到错误,因为您正在尝试使用字符串为数组编制索引。正如你通过查看你的data
对象所看到的,它是一个包装哈希图的数组(老实说这是不必要的)。如果你真的要正确使用这个对象,你需要写
var data= [{
'123': [{'a': 10, 'b': 20, 'c': 30, 'd': 40}],
'456': [{'a': 1, 'b': 2, 'c': 3, 'd': 4}]
}];
console.log(data[0]["123"])
这将打印[{'a': 10, 'b': 20, 'c': 30, 'd': 40}]
.
如果你想在data[0]["123"]
中分配一个新键,因为你也把值包装在一个数组中,你需要写
var data= [{
'123': [{'a': 10, 'b': 20, 'c': 30, 'd': 40}],
'456': [{'a': 1, 'b': 2, 'c': 3, 'd': 4}]
}];
data[0]["123"][0]["assigned_at"] = 52 //or w/e you want here
我建议放弃围绕你的价值观的[]
,只写
var data= {
'123': {'a': 10, 'b': 20, 'c': 30, 'd': 40},
'456': {'a': 1, 'b': 2, 'c': 3, 'd': 4}
};
data["123"]["assigned_at"] = 52 //or w/e
这将起作用。我认为你只是通过在你的价值观中添加[]
而给自己带来了一点困惑。
相关文章:
- 向多维数组添加值和从多维数组请求值
- 如何将JS数组添加到Meteor自动表单条目中
- 在不使用循环的情况下,从一个数据库字符串值向javascript数组添加多个对象
- 将行从数组添加到谷歌图表
- 从不同的数组添加重复的图块 PIXI.js
- 如何在 Javascript 中向数组添加其他对象
- 将javascript数组添加到多维数组中
- Coderbyte数组添加解决方案--For循环与For循环
- Knockout.js向数组添加新项
- Highcharts将变量数组添加到序列中
- 向javascript对象数组添加值
- 我可以用Javascript向数组添加函数吗
- 将数组添加到另一个数组
- 你能给被劫持的JavaScript数组添加一个函数吗
- 我可以向数组添加对象键吗
- 如何向JSON数组添加新属性
- 通过将$resource查询数组添加到AngularJS中另一个数组的底部来进行分页加载
- 使用名称/值从 json 数组添加项
- Javascript数组添加 - 所有组合
- 从 json 文件向 javascript 数组添加值