好的,我们有这个比较两个数据库的sql比较工具,并且发现了HTML中差异的报告。我需要解析它创建的JavaScript来了解有关差异的更多细节。例如,如果显示500个已更改的存储过程,则无法根据由谁进行更改或何时进行过滤。但是如果我能解析JS,我可以根据这些标准进行过滤。但是,他们的JS结构非常复杂,主要是嵌套数组,有时甚至低至4级。这是一个显示4个不同记录的示例。javascript数组元素是否知道它们的封闭数组?
var createsql = new Array(
new Array(new Array(0, "Error, No SQL Availible")),
new Array (
new Array(0,"-- Stored Procedure", " "),
new Array(0,"", ""),
new Array(1,"--------------------------------------------------------------------------------------", " "),
new Array(1,"/*", " "),
new Array(1,"Procedure : Schema.p_procedure1", " "),
new Array(1,"Description : This process will do something", " "),
new Array(1,"Creation Date : 11/24/2009", " "),
new Array(1,"Created By : John Doe", " "),
new Array(1,"Tables Updated : None", " "),
new Array(1,"*/", " "),
new Array(0, "", "")
),
new Array (
new Array(0,"-- Stored Procedure", " "),
new Array(0,"", ""),
new Array(1,"--------------------------------------------------------------------------------------", " "),
new Array(1,"/*", " "),
new Array(1,"Procedure : Schema.p_procedure2", " "),
new Array(1,"Description : This process will do something", " "),
new Array(1,"Creation Date : 11/24/2011", " "),
new Array(1,"Created By : Jane Doe", " "),
new Array(1,"Tables Updated : None", " "),
new Array(1,"*/", " "),
new Array(0, "", "")
),
new Array (
new Array(0,"-- Stored Procedure", " "),
new Array(0,"", ""),
new Array(1,"--------------------------------------------------------------------------------------", " "),
new Array(1,"/*", " "),
new Array(1,"Procedure : Schema.p_procedure3", " "),
new Array(1,"Description : This process will do something", " "),
new Array(1,"Creation Date : 11/24/2012", " "),
new Array(1,"Created By : Mark Doe", " "),
new Array(1,"Tables Updated : None", " "),
new Array(1,"*/", " "),
new Array(0, "", "")
)
);
我可以解析数组和得到什么,我这个代码
var match = "Jane Doe";
var createLength = createsql.length;
var matched;
for(var i = 0; i < createLength; i++){
if(typeof createsql[i] === "object"){
var firstArrayLength = createsql[i].length;
for(var j = 0; j < firstArrayLength; j++){
if(typeof createsql[i][j] === "object"){
var secondArrayLength = createsql[i][j].length;
for(var k = 0; k < secondArrayLength ; k++){
if(typeof createsql[i][j][k] === 'string'){
if((createsql[i][j][k].indexOf(match) != -1)){
console.log(createsql[i][j][k]);
console.log('matched');
//need to grab the parent and search its elemets for the one that starts with the word "Procedure"
}
}
}
}
}
}
}
,但需要什么我坚持是怎么做的,我得到了阵列的父母我目前是?例如,如果我的搜索字符串是Jane Doe
,我想要检索"Procedure : Schema.p_procedure2"
这个元素,它是兄弟数组中的第二个元素。 请别拍我!
PS:为提高循环任何其他建议,欢迎,这只是一个样本,这个名单可以大得多。
圣嵌套循环 –
任何人或其他人写道,JavaScript的第一部分不知道如何编写JavaScript,因此不应该信任。 JSON的存在是有原因的。 – zzzzBov
对标题的简短回答:不,项目不知道它们所在的数组。 – Guffa