このプロジェクトでは、複数の配列の共通部分を取得する必要があるため、この例は特定のシナリオにのみ適しています。たとえば、 A array var a = {1000,10001,10002,10003}; B array var b = {10002, 10003}; C array var c = {10003}; これら 3 つの配列の交差配列を取得する必要があります。 具体的なアイデアは次のとおりです。まず最小の配列を配列 A として初期化し、要素の最小数も配列 A の長さとなります。次に、各配列を反復処理して、これらの配列の最短の長さを最小長として取得します。 、同時に最短の長さの配列を取得します。次に、最小配列と各配列を反復し、要素が等しいかどうかの比較を開始し、カウンターを使用して要素が各配列に存在し、それが交差要素であるかどうかを判断します。 このアイデアは比較的単純ですが、実行できます。複数の配列との交差を取得するには、コードは次のとおりです。
<スクリプト> function getValues(obj){ var 値 = ""; var l = obj.options.length; for (var i=0; i if (i != (l-1)) { values = obj.options(i).value "_"; } else { 値 = obj.options(i).value; } } 戻り値。 }
function _test() { var ids = getValues(document.all.aa); var aa = _getIntersection(ids); }
function _getIntersection(src) { var tAry = src.split("_"); //最小数组 var minAry = null; var min = tAry[0].split(",").length; //初期化第一は長さの最小数組 minAry = tAry[0].split(","); for (var i = 1, len = tAry.length; i var temp = tAry[i].split(","); if (temp.length min = temp.length; minAry = temp; } } alter("最小数组:" minAry);
var ret = ''; for (var i = 0, len = minAry.length; i var srcNum = parseInt(minAry[i]); var counter = 0; for (var j = 0, ll = tAry.length; j var tt = tAry[j].split(","); for (var k = 0, l = tt.length; k var tarNum = parseInt(tt[k]); if (srcNum == tarNum) { カウンター ; } } } if (counter == tAry.length) { ret = srcNum ","; } } ret = strSlice(ret, ','); alter("交集是:" ret); }