示例如果我有这样的数组:
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将始终改变。
谢谢:)
答案 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)
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])