0

私は3つの要素のarrayXを持っており、$。inArray()を使用して別のarrayYでこの3つの要素を検索しています...そしてYの各X要素の場所を返します

X = [1,2,3] ;
y = [1,5,6,1,6,9,3,2] ;

しかし、に重複がありy、1はで2回発生しy[0]y[3]

実際の例はここにありますhttp://jsfiddle.net/minagabriel/kHG9K/

最初の1人の占有を取得し、他の占有をスキップするにはどうすればよいですか?

それぞれの最初に発生した配列で1,2,3の位置をプッシュしています

4

5 に答える 5

1

これはjQueryがなくても正常に機能します$.inArray

x = [1,2,3] ;
y = [1,5,6,1,6,9,3,2] ;

var z = {};

for (var i = 0; i < x.length; i++)
    for (var j = 0; j < y.length; j++)
        if (x[i] == y[j]) {
            z[x[i]] = j;
            break;
        }

console.log(z);

x<code> zは、キーとしての要素と値としてのその位置を含むオブジェクトです。

アップデート。これをあなたの例に適用すると、これが実用的な解決策です:http: //jsfiddle.net/kHG9K/19/

于 2012-05-09T16:14:44.793 に答える
0
var x = [1,2,3];
var firstOccurrences = [];
var y = [1,5,6,1,6,9,3,2];

for (var i = 0, len = x.length; i < len; i++) {
    firstOccurrences.push(y.indexOf(x[i]));       
}

console.log(firstOccurrences);


編集:以下に示すように、indexOf()は古いバージョンのIEでは信頼できません。より慣用的なjQueryアプローチは次のとおりです。

var x = [1,2,3];
var y = [1,5,6,1,6,9,3,2];

var firstOccurrences = $.map(x, function(item) { return $.inArray(item, y); });
于 2012-05-09T16:11:12.003 に答える
0

jsFiddle: http: //jsfiddle.net/kHG9K/16/

var x = [1,2,3] ;
var y = [1,5,6,1,6,9,3,2] ;

function firstOccurence()
{
    for ( var a in x )
    {
       return $.inArray( x[a] , y );
    }
}

alert( firstOccurence() );    ​
于 2012-05-09T16:19:59.667 に答える
0

http://jsfiddle.net/kHG9K/18/

見つかったら、配列からアイテムを削除します。

    if (start >= 0) {
        alert(y[i] + " " + "found it" + " " + " location" + z);
        y[i] = null;
    }

注:これは、配列をループする正しい方法ではありません。for(index;index<length;index++)癖を避けるために使用します。

于 2012-05-09T16:30:29.903 に答える
0

フィドルリンク:ここをクリック

あなたは使用する必要があります:

$.inArray( value, array [, fromIndex] )

あなたの場合、y配列から値1のインデックスを取得するには、次のように使用できます。

$.inArray('1', y)

xの各値(yに存在する場合)を確認し、各インデックスを3番目の配列zに保存するには:

var x = [1,2,3], y = [1,5,6,1,6,9,3,2], z = new Array(), i;
for(i = 0; i < x.length; i++) {
    var indexInY = $.inArray(x[i], y); // You get index -1 if the value is not found.
    z.push(indexInY);
    alert("Does x[" + i + "] with value = " + x[i] + 
                          " exist in y array? " + 
                          ((indexInY != -1) ? "Yes at position " + indexInY + "." : "No.")
                         );
}
alert("Indexes of x elements in y: [" + z + "]");

// Results:
// Does x[0] with value = 1 exist in y array? Yes at position 0.
// Does x[1] with value = 2 exist in y array? Yes at position 7.
// Does x[2] with value = 3 exist in y array? Yes at position 6.
//
// Indexes of x elements in y: [0,7,6]

探している値が配列に見つからなかった場合は、インデックス-1を受け取ることに注意してください。</ p>

フィドルリンク:ここをクリック

于 2012-05-09T16:58:58.773 に答える