首先只在数组中出现

时间:2012-05-09 16:06:21

标签: javascript jquery

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

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

y中有重复,1 y[0]y[3]发生了两次

真实的例子是http://jsfiddle.net/minagabriel/kHG9K/

如何获得前1个入住率并跳过其他人?

我正在推动阵列中1,2,3的位置,每个阵列发生第一次

5 个答案:

答案 0 :(得分: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);

z是一个对象,包含来自x的元素作为键及其作为值的位置。

更新。将此应用于您的示例,以下是可行的解决方案:http://jsfiddle.net/kHG9K/19/

答案 1 :(得分: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); });

答案 2 :(得分: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() );    ​

答案 3 :(得分:0)

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

我刚刚找到数组中的项目。

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

注意:这不是循环数组的正确方法。使用for(index;index<length;index++)来避免怪癖。

答案 4 :(得分:0)

小提琴链接:click here

你必须使用:

$.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

小提琴链接:click here