0

我有一个包含三个元素的数组 X,我正在使用 $.inArray() 在另一个数组 Y 中搜索这三个元素 ...并返回 Y 中每个 X 元素的位置

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

但是有重复, 1 在和中y出现了两次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);

​<code>z 是一个对象,其中包含元素 fromx作为键,其位置作为值。

更新。将此应用于您的示例,这是可行的解决方案: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

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

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

小提琴链接:点击这里

你必须使用:

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

在您的情况下,要从 y 数组中获取值 1 的索引,您可以简单地使用:

$.inArray('1', y)

检查 x 的每个值,如果存在于 y 中,并将每个索引保存在第三个数组 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 回答