Javascript 返回给定元素的所有数组索引
我编写了下面的函数,它在给定的数组和值上返回数组中值的索引数组。 我观察到它只对某些元素有效Javascript 返回给定元素的所有数组索引,javascript,arrays,Javascript,Arrays,我编写了下面的函数,它在给定的数组和值上返回数组中值的索引数组。 我观察到它只对某些元素有效 var arr = [1,2,3,1,2,3,3,4,3] var findAll = function(arr, val) { var results = []; var length = arr.length; var pos = 0; while(pos < length) { pos = arr.indexOf(val, pos);
var arr = [1,2,3,1,2,3,3,4,3]
var findAll = function(arr, val) {
var results = [];
var length = arr.length;
var pos = 0;
while(pos < length) {
pos = arr.indexOf(val, pos);
if (pos == -1) return [];
results.push(pos);
pos = pos + 1;
}
return results;
}
//Output:
findAll(arr,3)
[2, 5, 6, 8]
findAll(arr,1)
[] // expected [0,3]
findAll(arr,2)
[] // expected [1,4]
findAll(arr,4)
[] // expected [7]
var arr=[1,2,3,1,2,3,3,4,3]
var findAll=函数(arr,val){
var结果=[];
变量长度=arr.length;
var-pos=0;
while(pos
问题在于这一行:
if (pos == -1) return [];
您应将其替换为:
if (pos == -1) break;
或者可能:
if (pos == -1) return results;
问题在于这一行:
if (pos == -1) return [];
您应将其替换为:
if (pos == -1) break;
或者可能:
if (pos == -1) return results;
问题在于这一行:
if (pos == -1) return [];
您应将其替换为:
if (pos == -1) break;
或者可能:
if (pos == -1) return results;
问题在于这一行:
if (pos == -1) return [];
您应将其替换为:
if (pos == -1) break;
或者可能:
if (pos == -1) return results;
让我们快速重写函数。这就是您所需要的:
var findAll = function(arr, val) {
var results = [];
for(var i = 0; i < arr.length; i++){ // Loop through the array.
if(arr[i] === val){ // If the desired value is found
results.push(i); // Push it's index to `results`
}
}
return results;
}
var findAll=函数(arr,val){
var结果=[];
for(var i=0;i
它可能不是最有效的,因为不管发生什么,它都会迭代整个数组,但它的工作方式很有魅力。让我们快速重写该函数。这就是您所需要的:
var findAll = function(arr, val) {
var results = [];
for(var i = 0; i < arr.length; i++){ // Loop through the array.
if(arr[i] === val){ // If the desired value is found
results.push(i); // Push it's index to `results`
}
}
return results;
}
var findAll=函数(arr,val){
var结果=[];
for(var i=0;i
它可能不是最有效的,因为不管发生什么,它都会迭代整个数组,但它的工作方式很有魅力。让我们快速重写该函数。这就是您所需要的:
var findAll = function(arr, val) {
var results = [];
for(var i = 0; i < arr.length; i++){ // Loop through the array.
if(arr[i] === val){ // If the desired value is found
results.push(i); // Push it's index to `results`
}
}
return results;
}
var findAll=函数(arr,val){
var结果=[];
for(var i=0;i
它可能不是最有效的,因为不管发生什么,它都会迭代整个数组,但它的工作方式很有魅力。让我们快速重写该函数。这就是您所需要的:
var findAll = function(arr, val) {
var results = [];
for(var i = 0; i < arr.length; i++){ // Loop through the array.
if(arr[i] === val){ // If the desired value is found
results.push(i); // Push it's index to `results`
}
}
return results;
}
var findAll=函数(arr,val){
var结果=[];
for(var i=0;i
它可能不是最有效的,因为不管发生什么,它都会迭代整个数组,但它的工作方式很有魅力。问题是您一直搜索到数组末尾。如果你找不到东西,你就退货 因此,如果您搜索的值不是数组中的最后一个元素,您将得到[] 您应该将if更改为:
if (pos != -1) results.push(pos);
这个问题一直搜索到数组结束。如果你找不到东西,你就退货 因此,如果您搜索的值不是数组中的最后一个元素,您将得到[] 您应该将if更改为:
if (pos != -1) results.push(pos);
这个问题一直搜索到数组结束。如果你找不到东西,你就退货 因此,如果您搜索的值不是数组中的最后一个元素,您将得到[] 您应该将if更改为:
if (pos != -1) results.push(pos);
这个问题一直搜索到数组结束。如果你找不到东西,你就退货 因此,如果您搜索的值不是数组中的最后一个元素,您将得到[] 您应该将if更改为:
if (pos != -1) results.push(pos);
这就是如何做到的。
很简单。并且不会遍历整个数组
function check(ar, val){
var pos = 0;
var tmp = [];
pos = ar.indexOf(val, pos);
while (pos >= 0){
tmp.push(pos);
pos = ar.indexOf(val, pos + 1);
}
return tmp;
()这是怎么做的。
很简单。并且不会遍历整个数组
function check(ar, val){
var pos = 0;
var tmp = [];
pos = ar.indexOf(val, pos);
while (pos >= 0){
tmp.push(pos);
pos = ar.indexOf(val, pos + 1);
}
return tmp;
()这是怎么做的。
很简单。并且不会遍历整个数组
function check(ar, val){
var pos = 0;
var tmp = [];
pos = ar.indexOf(val, pos);
while (pos >= 0){
tmp.push(pos);
pos = ar.indexOf(val, pos + 1);
}
return tmp;
()这是怎么做的。
很简单。并且不会遍历整个数组
function check(ar, val){
var pos = 0;
var tmp = [];
pos = ar.indexOf(val, pos);
while (pos >= 0){
tmp.push(pos);
pos = ar.indexOf(val, pos + 1);
}
return tmp;
()我需要根据我的作业使用'indexOf'方法来实现这一点:)好吧,这是一个愚蠢的作业xD,在这种情况下,@GZ可能最好地解释了问题所在。我需要根据我的作业使用'indexOf'方法来实现这一点:)好吧,这是一个愚蠢的作业xD,在那种情况下,@GZ可能最好地解释了什么是错的。我需要按照我的作业使用'indexOf'方法来实现这一点:)好吧,这是一个愚蠢的作业xD,在这种情况下,@GZ可能最好地解释了什么是错的。我需要按照我的作业使用'indexOf'方法来实现这一点:)好吧,这是一个愚蠢的作业xD,在这种情况下,@GZ可能是解释问题的最好方法。