String 字符串匹配算法中的奇怪行为
我知道我的“算法”一点用处都没有,但我想我遇到了一个非常奇怪的行为 查找匹配([“笑话”,“笑话”],“笑话”);返回笑话。但是发现匹配([“笑话”、“笑话”、“笑话”]、“笑话”);返回笑话和笑话!当我单独测试jokef时,它不匹配 这是我的密码:String 字符串匹配算法中的奇怪行为,string,flash,actionscript-3,String,Flash,Actionscript 3,我知道我的“算法”一点用处都没有,但我想我遇到了一个非常奇怪的行为 查找匹配([“笑话”,“笑话”],“笑话”);返回笑话。但是发现匹配([“笑话”、“笑话”、“笑话”]、“笑话”);返回笑话和笑话!当我单独测试jokef时,它不匹配 这是我的密码: for (var p in dataArray) { if (dataArray[p].length != matching.length) { dataArray.splic
for (var p in dataArray) {
if (dataArray[p].length != matching.length) {
dataArray.splice(p,1);
}
}
for (var k = 0; k < matching.length; k++) {
for (var i in dataArray) {
if (dataArray[i].split('')[k] != matching.split('')[k]) {
dataArray.splice(i,1);
}
}
}
if(dataArray.length == 0){
return null;
} else {
return dataArray;
}
for(数据数组中的var p){
if(dataArray[p].length!=匹配的.length){
拼接(p,1);
}
}
for(var k=0;k
Array.splice()是一种破坏性操作,可改变数组的长度。如果在中间for循环中添加console.log语句,则可以清楚地看到这一点:
它永远不会到达“jokef”中的“f”,因为它拼接了阵列。matching.length现在为2,for条件(var k=0;kfor (var k = 0; k < matching.length; k++) {
for (var i in dataArray) {
console.log(dataArray, i, k, dataArray[i].split('')[k], matching.split('')[k]);
if (dataArray[i].split('')[k] != matching.split('')[k]) {
dataArray.splice(i,1);
}
}
}
["jokes", "jokeg", "jokef"] 0 0 j j
["jokes", "jokeg", "jokef"] 1 0 j j
["jokes", "jokeg", "jokef"] 2 0 j j
["jokes", "jokeg", "jokef"] 0 1 o o
["jokes", "jokeg", "jokef"] 1 1 o o
["jokes", "jokeg", "jokef"] 2 1 o o
["jokes", "jokeg", "jokef"] 0 2 k k
["jokes", "jokeg", "jokef"] 1 2 k k
["jokes", "jokeg", "jokef"] 2 2 k k
["jokes", "jokeg", "jokef"] 0 3 e e
["jokes", "jokeg", "jokef"] 1 3 e e
["jokes", "jokeg", "jokef"] 2 3 e e
["jokes", "jokeg", "jokef"] 0 4 s s
["jokes", "jokeg", "jokef"] 1 4 g s