怎么样两个数组中找到相同字符串的各数

时间:2021-10-14 10:13:04
字符串之间是用,分隔,前面一段是数值,后面一段是字符,前后用|分隔
列如   
字符串A="01,02,03,04,05,06|a1,a2,a3"
字符串B="03,05,07,09,10|a2,b1,b2,b3,b5"

字符串的长度不是固定的,因为数据比较多,如何得到两个数组中相同字符的个数?

6 个解决方案

#1



    a = "01,02,03,04,05,06|a1,a2,a3"
    b = "03,05,07,09,10|a2,b1,b2,b3,b5"

    a = a.split(/[,\|]/g)
    b = b.split(/[,\|]/g)
    var kv = {},arrSame=[]
    for (var i = 0; i < a.length; i++) kv[a[i]] = true;
    for (var i = 0; i < b.length; b++) if (kv[b[i]]) arrSame.push(b[i])

    alert(arrSame.join()+'\n'+arrSame.length)

#2


引用 1 楼 showbo 的回复:

    a = "01,02,03,04,05,06|a1,a2,a3"
    b = "03,05,07,09,10|a2,b1,b2,b3,b5"

    a = a.split(/[,\|]/g)
    b = b.split(/[,\|]/g)
    var kv = {},arrSame=[]
    for (var i = 0; i < a.length; i++) kv[a[i]] = true;
    for (var i = 0; i < b.length; b++) if (kv[b[i]]) arrSame.push(b[i])

    alert(arrSame.join()+'\n'+arrSame.length)


谢谢,代码有点小问题,没有正确显示

#3


引用 2 楼 bob952 的回复:
Quote: 引用 1 楼 showbo 的回复:


    a = "01,02,03,04,05,06|a1,a2,a3"
    b = "03,05,07,09,10|a2,b1,b2,b3,b5"

    a = a.split(/[,\|]/g)
    b = b.split(/[,\|]/g)
    var kv = {},arrSame=[]
    for (var i = 0; i < a.length; i++) kv[a[i]] = true;
    for (var i = 0; i < b.length; b++) if (kv[b[i]]) arrSame.push(b[i])

    alert(arrSame.join()+'\n'+arrSame.length)


谢谢,代码有点小问题,没有正确显示

你问题都没说清楚,|分隔的算不算一个项,算代码就没有问题,显示你自己改下,那个是指输出了相同的项内容是什么和多少项

#4


我测试了好几次,,不管有几个相同数,显示只有 03   1

#5


不好意思,我表达的不太清楚,补充一下   

找到  相同的字符串个数,   并显示  | 前的有几个相同,|后的有几个相同

谢谢了

#6


已经解决了,谢谢

#1



    a = "01,02,03,04,05,06|a1,a2,a3"
    b = "03,05,07,09,10|a2,b1,b2,b3,b5"

    a = a.split(/[,\|]/g)
    b = b.split(/[,\|]/g)
    var kv = {},arrSame=[]
    for (var i = 0; i < a.length; i++) kv[a[i]] = true;
    for (var i = 0; i < b.length; b++) if (kv[b[i]]) arrSame.push(b[i])

    alert(arrSame.join()+'\n'+arrSame.length)

#2


引用 1 楼 showbo 的回复:

    a = "01,02,03,04,05,06|a1,a2,a3"
    b = "03,05,07,09,10|a2,b1,b2,b3,b5"

    a = a.split(/[,\|]/g)
    b = b.split(/[,\|]/g)
    var kv = {},arrSame=[]
    for (var i = 0; i < a.length; i++) kv[a[i]] = true;
    for (var i = 0; i < b.length; b++) if (kv[b[i]]) arrSame.push(b[i])

    alert(arrSame.join()+'\n'+arrSame.length)


谢谢,代码有点小问题,没有正确显示

#3


引用 2 楼 bob952 的回复:
Quote: 引用 1 楼 showbo 的回复:


    a = "01,02,03,04,05,06|a1,a2,a3"
    b = "03,05,07,09,10|a2,b1,b2,b3,b5"

    a = a.split(/[,\|]/g)
    b = b.split(/[,\|]/g)
    var kv = {},arrSame=[]
    for (var i = 0; i < a.length; i++) kv[a[i]] = true;
    for (var i = 0; i < b.length; b++) if (kv[b[i]]) arrSame.push(b[i])

    alert(arrSame.join()+'\n'+arrSame.length)


谢谢,代码有点小问题,没有正确显示

你问题都没说清楚,|分隔的算不算一个项,算代码就没有问题,显示你自己改下,那个是指输出了相同的项内容是什么和多少项

#4


我测试了好几次,,不管有几个相同数,显示只有 03   1

#5


不好意思,我表达的不太清楚,补充一下   

找到  相同的字符串个数,   并显示  | 前的有几个相同,|后的有几个相同

谢谢了

#6


已经解决了,谢谢