子数组和推送数据
sub array and push data
你好,我正在尝试创建一个动态数组,但我遇到了问题,我有一个onclick
事件来创建发票,所以当单击时启动并且我有它
var $boletos=new Array();
function onclick(value){
if($invoice.length==0){
$invoice.push({"items":{}});
$invoice[0].items[0]={"ID":this.person.ID,"other":value};
}else{
//here i do a "for" to create new invoice index, or new item
....
}
}
我想要的结果是这样的
Invoice{
0:{ items{
0:{ ID:"123",other:"xxx"}
1:{ ID:"234",other:"xxx"}
2:{ ID:"233",other:"xxx"}
}
}
1:{ items{
0:{ ID:"1323",other:"yyy"}
1:{ ID:"1323",other:"xyyxx"}
2:{ ID:"1213",other:"yyyy"}
}
}
2:{ items{
0:{ ID:"12323",other:"zz"}
1:{ ID:"1223",other:"zz"}
2:{ ID:"1123",other:"zz"}
}
}
}
但是我只能做一个对象,我不能调用推送事件,这是因为是一个对象,而不是一个数组,所以也许我需要做一些类似的事情 $invoice[0].items[0].push({"ID":this.person.ID,"other":value});
请帮助我
我不完全理解您在这里使用的逻辑,但基本上您应该使用 push()
将新项目添加到数组中,而不是数字索引。items
属性也应该是一个数组,而不是一个对象:
var $boletos = [];
function onclick(value){
if($boletos.length === 0 || shouldStartANewInvoice) {
$boletos.push({ items: [] });
}
$boletos[$boletos.length - 1].items.push({
ID: this.person.ID,
other:value
});
}
只是为了给@JLRishe的答案添加上下文和示例。
实际上有两种方法可以做到这一点,具体取决于您的发票用例。例如,如果我在 C# 中提交服务器端,我会将其构造得更像一个对象 。否则,数组方法工作得很好 。
-
正如他建议的那样,Items是一个数组:http://jsfiddle.net/nv76sd9s/1/
-
另一种方法是让 Items 成为对象,其中 ID 作为键,值作为值:http://jsfiddle.net/nv76sd9s/3/
这里的区别在于最终对象的结构以及您计划如何使用它。在我的#2链接中,对象更加结构化。它还会影响循环访问它们的方式。例:
var items = Invoice.Items;
for (k in items) {
var item = items[k];
for (k in item) {
console.log(k +': '+item[k]);
}
}
相关文章:
- 使用数据数组创建多个类似组件
- WebAudio API数据数组大小
- Jquery 循环一次或在数据数组中显示一次数据
- Cakephp 访问不在模型数据数组上的输入
- 使用来自 Ajax 响应的 JSON 数据数组
- Angular JS(离子)数据数组到$scope元素
- handontable:在不更改数据数组/对象的情况下隐藏某些列
- 如何使用for循环语句通过Ajax发送大数据数组
- 压缩 JS 中的数据数组
- 传递的参数D3提示回调是完整的数据数组
- 如何在数据数组的每次迭代中创建一个内容为“i+1”的新 HTML 元素
- 在 laravel 4 上使用循环将数据数组存储到单个数组中
- 为什么它说输入数据数组的格式不正确 jqchart.
- Javascript - 使用变量 RegExp 匹配数据数组中的多个关键字
- 尝试将数据数组设置为从视图调用函数后$scope
- 如何在 PHP 中创建 jqplot 数据数组
- 如何使用该数据数组从左向右移动画布
- 如何根据数字列从 Parse 中对数据数组进行排序
- 为什么 php json 响应不会将数据数组发送回 ajax jquery 请求
- 如何将内容添加到 JQuery Flot 图表数据数组工具提示