如何获取数组的唯一值并找到位值?

时间:2013-12-05 13:50:55

标签: javascript

示例如果我有这样的数组:

First Loop

[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2]
value: 2
placeValue: 10

第二圈

[-1, 0, -1, -1, -1, -1, -1]
value: 0
placeValue: 1

第三圈

[-1, -1, -1, -1, 5, -1, -1, -1, -1, -1]
value: 5
placeValue: 4
在JavaScript中

?数组的集合在循环内部,值和placevalue将始终改变。

谢谢:)

4 个答案:

答案 0 :(得分:1)

你可以迭代你的arr,把它放在一个“map”中,然后迭代这个,知道数字越小,然后做一个indexOf()。

看看这个FIDDLE

我把它们放在这样:

for (var i = 0; i < arr.length; i++) {
  if (arr[i] in a) {
      a[arr[i]] = a[arr[i]] + 1;
  } else {
      a[arr[i]] = 1;
  }
}

当数字已经在数组中时,我会+1,当它不存在时,我只是将其设置为1.

然后我像这样循环:

for (var key in a)
{
    if (a[key] != null && a[key] == 1)
    {
        value = key;
        break;
    }
}
index = arr.indexOf(Number(value));

这看一下新数组中的每个值,如果有一个唯一的(有1作为值),我退出循环并用indexOf(value)得到它的索引;

然后你在var值和索引中得到你的值。

答案 1 :(得分:0)

for (var c = 0; c < arr.length; c++) {   
    if(arr[c] == 2) {
       console.log('value ='+arr[c]);
       console.log('placevalue =');
       console.log(c+1);
    }
};

答案 2 :(得分:0)

假设您知道-1是非唯一值。

for (var i = 0; i < arr.length; i++) {
    if (arr[i] !== -1) {
        console.log("value " + arr[i]);
        console.log("position " + i);
        break;    // assuming only one unique value, otherwise leave this line out
    }
}

答案 3 :(得分:0)

try this :

    var g=[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2];

var o={}
var inx=0;
for (var i=0;i<g.length;i++)
{
  o[g[i]]=[ (o[g[i]]?(o[g[i]][0]+1):1),inx++,g[i]];

}

for (a in o)
  if (o[a][0]==1) alert(o[a][2]+' unique at '+(o[a][1])+' count='+o[a][0])