Javascript JS或jQuery方法将json排列到多维数组中
我正在为前端处理服务器的响应而苦苦挣扎,该服务器会在本季发布活动评论。同一事件可以有多个审阅者,简化版的Javascript JS或jQuery方法将json排列到多维数组中,javascript,jquery,arrays,Javascript,Jquery,Arrays,我正在为前端处理服务器的响应而苦苦挣扎,该服务器会在本季发布活动评论。同一事件可以有多个审阅者,简化版的response如下所示: [{"id":"3","reviewer_id":"4","event_id":"3","review":"a"}, {"id":"19","reviewer_id":"3","event_id":"4","review":"b"}, {"id":"20","reviewer_id":"1","event_id":"4","review":"b"}] var ev
response
如下所示:
[{"id":"3","reviewer_id":"4","event_id":"3","review":"a"},
{"id":"19","reviewer_id":"3","event_id":"4","review":"b"},
{"id":"20","reviewer_id":"1","event_id":"4","review":"b"}]
var events = new Array();//define the recipient array
$.each(response, function(index, row) {
if (!(jQuery.isArray(events[Number(row.event_id)]))) {//if a variable by this index is not array then...
var events [Number(row.event_id)] = new Array();// ...declare it as array, I get error thrown here: "Uncaught SyntaxError: Unexpected token ["
}
events[Number(row.event_id)].push(row);//push current row into appropriate recipient array member
});
我想使用事件创建和数组,其中数组索引将由事件\u id
定义,因此我执行以下操作:
[{"id":"3","reviewer_id":"4","event_id":"3","review":"a"},
{"id":"19","reviewer_id":"3","event_id":"4","review":"b"},
{"id":"20","reviewer_id":"1","event_id":"4","review":"b"}]
var events = new Array();//define the recipient array
$.each(response, function(index, row) {
if (!(jQuery.isArray(events[Number(row.event_id)]))) {//if a variable by this index is not array then...
var events [Number(row.event_id)] = new Array();// ...declare it as array, I get error thrown here: "Uncaught SyntaxError: Unexpected token ["
}
events[Number(row.event_id)].push(row);//push current row into appropriate recipient array member
});
正如代码中指出的,我抛出了一个错误
未捕获的SyntaxError:意外标记[在第4行中]
如果您有任何帮助,我们将不胜感激。您在这行有语法错误:
var events [Number(row.event_id)] = new Array();
您需要将此更改为:
events[Number(row.event_id)] = new Array();
在对象中添加属性或在数组中添加元素不需要var
声明。这是一个语法错误。下面是代码的工作示例:
var响应=[{
“id”:“3”,
“审阅者id”:“4”,
“事件id”:“3”,
“审查”:“a”
},
{
“id”:“19”,
“审阅者id”:“3”,
“事件id”:“4”,
“审查”:“b”
},
{
“id”:“20”,
“审阅者id”:“1”,
“事件id”:“4”,
“审查”:“b”
}
];
var events=新数组();
$.each(响应、函数(索引、行){
if(!(jQuery.isArray(事件[Number(row.event\u id)])){
事件[Number(row.event_id)]=新数组();
}
事件[编号(行.事件id)]。推送(行);
});
console.log(事件);
https://stackoverflow.com/questions/49666110/js-or-jquery-approach-to-arrange-json-into-multidimensional-array/49666247#
这一行有语法错误:
var events [Number(row.event_id)] = new Array();
您需要将此更改为:
events[Number(row.event_id)] = new Array();
在对象中添加属性或在数组中添加元素不需要var
声明。这是一个语法错误。下面是代码的工作示例:
var响应=[{
“id”:“3”,
“审阅者id”:“4”,
“事件id”:“3”,
“审查”:“a”
},
{
“id”:“19”,
“审阅者id”:“3”,
“事件id”:“4”,
“审查”:“b”
},
{
“id”:“20”,
“审阅者id”:“1”,
“事件id”:“4”,
“审查”:“b”
}
];
var events=新数组();
$.each(响应、函数(索引、行){
if(!(jQuery.isArray(事件[Number(row.event\u id)])){
事件[Number(row.event_id)]=新数组();
}
事件[编号(行.事件id)]。推送(行);
});
console.log(事件);
https://stackoverflow.com/questions/49666110/js-or-jquery-approach-to-arrange-json-into-multidimensional-array/49666247#
问题似乎出在这一行
var events [Number(row.event_id)] = new Array();
它似乎试图声明一个名为events
(已在上面声明)的变量,同时将一个新数组分配给特定索引
删除var
,应该可以解决语法错误
events [Number(row.event_id)] = new Array();
问题似乎出在这条线上
var events [Number(row.event_id)] = new Array();
它似乎试图声明一个名为events
(已在上面声明)的变量,同时将一个新数组分配给特定索引
删除var
,应该可以解决语法错误
events [Number(row.event_id)] = new Array();
因为你在它前面放了一个
var
var events [Number(row.event_id)] = ...
删除var
,错误就会消失
events [Number(row.event_id)] = ...
原因是关键字var
用于定义新变量,在定义新变量时,不能为该变量创建属性(例如Number(row.event\u id)
)
此外,事件
已在前面定义。您不应再次定义事件
,以使功能正常工作
var response=[{“id”:“3”,“审阅者id”:“4”,“事件id”:“3”,“审阅”:“a”},
{“id”:“19”,“审阅者id”:“3”,“事件id”:“4”,“审阅”:“b”},
{“id”:“20”,“审阅者id”:“1”,“事件id”:“4”,“审阅”:“b”}];
var events=new Array();//定义收件人数组
$.each(响应、函数(索引、行){
如果(!(jQuery.isArray(events[Number(row.event_id)]){//如果此索引的变量不是数组,则。。。
events[Number(row.event_id)]=new Array();/…将其声明为Array,在此处抛出错误:“Uncaught SyntaxError:意外标记[”
}
事件[编号(row.event_id)]。推送(row);//将当前行推送到相应的收件人数组成员中
});
console.log(事件);
因为你在它前面放了一个var
var events [Number(row.event_id)] = ...
删除var
,错误就会消失
events [Number(row.event_id)] = ...
原因是关键字var
用于定义新变量,在定义新变量时,不能为该变量创建属性(例如Number(row.event\u id)
)
此外,事件
已在前面定义。您不应再次定义事件
,以使功能正常工作
var response=[{“id”:“3”,“审阅者id”:“4”,“事件id”:“3”,“审阅”:“a”},
{“id”:“19”,“审阅者id”:“3”,“事件id”:“4”,“审阅”:“b”},
{“id”:“20”,“审阅者id”:“1”,“事件id”:“4”,“审阅”:“b”}];
var events=new Array();//定义收件人数组
$.each(响应、函数(索引、行){
如果(!(jQuery.isArray(events[Number(row.event_id)]){//如果此索引的变量不是数组,则。。。
events[Number(row.event_id)]=new Array();/…将其声明为Array,在此处抛出错误:“Uncaught SyntaxError:意外标记[”
}
事件[编号(row.event_id)]。推送(row);//将当前行推送到相应的收件人数组成员中
});
console.log(事件);
谢谢,您是否碰巧知道为什么我得到数组的第一个元素是空的?因此事件
看起来像[empty×3,array(1),array(2),…]
带有控制台.log()
因为事件[Number(row.event\u id)]。推送(row)
。最小的事件id
是3
,但是作为一个数组,events
应该在索引0,1,2
中有值,但是这些值丢失了。所以有空的x3
只要使用var events={}
就可以解决问题,但它不是数组