首页 > 试题广场 >

查找元素位置

[编程题]查找元素位置
  • 热度指数:72583 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
在数组 arr 中,查找值与 item 相等的元素出现的所有位置
示例1

输入

['a','b','c','d','e','f','a','b','c'] 'a'

输出

[0, 6]
function findAllOccurrences(arr, target) {
    let indexs = []
    for(let i in arr){
        if(arr[i] === target){
            indexs.push(i)
        }
    }
    return indexs
}
for循环判断即可
发表于 2021-03-31 21:55:50 回复(0)
{
zhe
function findAllOccurrences(arr, target) {
    var all = [];
    for(var i = 0;i<arr.length;i++){
        if(arr[i] == target){
            all.push(i)
        }
    }
    console.log(all)
}
var arr = ['a','b','c','d','e','f','a','b','c']
findAllOccurrences(arr,'a')
这样写运行报null,但是我在vscode运行的没问题呀

发表于 2021-03-27 16:52:21 回复(0)
function findAllOccurrences(arr, target) {
    var indexArr = [];
    for (var i = 0; i < arr.length; i++) {
        if(arr[i] === target){
            indexArr.push(i)
        }
    }
    return indexArr
}
发表于 2021-03-26 16:17:19 回复(0)
使用filter
function findAllOccurrences(arr, target) {
    var newArr=[]
    arr.filter((item,index)=>{
        if(item===target) newArr.push(index)
    })
    return newArr
}
使用reduce

function findAllOccurrences(arr, target) {
    return arr.reduce((p,c,index)=>{c==target&&p.push(index);return p},[])
}


发表于 2021-03-20 10:46:49 回复(0)
// 1.
function findAllOccurrences(arr, target) {
    return arr.map((item, index) => item === target ? index : -1).filter(item => item !== -1)
}

// 2.
function findAllOccurrences(arr, target) {
    constbuffer = []
    arr.forEach((item, index) => item === target && buffer.push(index))
    returnbuffer
}

编辑于 2021-01-11 18:42:26 回复(0)
以时间换空间,不浪费多余的内存
function findAllOccurrences(arr, target) {
   return arr.map((item, index) => item === target && index ).filter(item => typeof item === 'number');
}
发表于 2020-10-07 12:54:57 回复(0)
function findAllOccurrences(arr, target) {
let arr1=[]
let arr2=arr
arr2.map(e=>{
    if(e==target){
        arr1.push(arr2.indexOf(e))
        arr2.splice(arr2.indexOf(e),1,null)
    }
})
    return(arr1)
}


发表于 2020-09-06 11:40:28 回复(0)
function findAllOccurrences(arr, target) {
    return arr.reduce((res, v, index) => (v === target ? [...res, index] : res), [])
}
发表于 2020-03-07 11:04:56 回复(0)
function findAllOccurrences(arr, target) {
    var arr_f = [];
    for (let i = 0; i < arr.length; i++) {
        if (arr[i] == target) {
            arr_f.push(i)
        }
    }
    return arr_f
}
发表于 2020-03-07 10:47:27 回复(0)
function findAllOccurrences(arr, target) {
    var newArr = [];    
    if(arr.indexOf(target)==-1){
        return null;
    }else{
       while(arr.indexOf(target)!=-1){
        var index = arr.indexOf(target);
        newArr.push(index);
        arr[index]++; 
    }
        return newArr; 
    }  
}
发表于 2019-12-21 02:29:01 回复(0)
function findAllOccurrences(arr, target) {
    var a = [];
    arr.forEach(function(item, index) {
        return item === target && a.push(index);
    });
    return a;
}

function findAllOccurrences(arr, target) {
    return arr.map(function(item, index) {
        return item === target ? index : -1;
    }).filter(function(index) {
        return index > -1;
    });
}

发表于 2019-08-08 20:12:15 回复(0)
function findAllOccurrences(arr, target) {
    var newArr = [];
    arr.filter(function(ele, index) {
        return ele !== target || newArr.push(index);
    });
    return newArr;
}
发表于 2019-05-09 14:47:19 回复(0)
function findAllOccurrences(arr, target) {
    var result = [];
    arr.forEach(function(e, index){
        if(e==target){
            result.push(index);
        }
    })
    return result;
}
发表于 2019-03-24 20:51:03 回复(0)
function findAllOccurrences(arr, target) {
    var res=[];
    arr.forEach(function(e,index){
        if(e==target){
            res.push(index);
        }
    })
    return res;
}
发表于 2018-10-20 22:54:47 回复(0)
function findAllOccurrences(arr, target) {
    var newArr=[];//创建一个新的数值
    for(var i=0;i<arr.length;i++){  //遍历原数组
        if(arr[i]==target){   //如果数组中的值和item相等
            newArr.push(i);   //则讲该值位置传递到数组中
        }
    }
    return newArr;
}
发表于 2018-09-06 20:12:22 回复(0)

function findAllOccurrences(arr, target) {
   var newArr=[]
   arr.forEach(function(item,index){
       if(item==target){
          newArr.push(index)
        }
});
        return newArr;
}

编辑于 2018-03-24 19:38:15 回复(0)
function findAllOccurrences(arr, target) {
    var newArr=[];
    for(var i=0,len=arr.length;i<len;i++){
        if(arr[i]==target)
            newArr.push(i);
    }
    return newArr;
}

发表于 2018-02-02 15:16:58 回复(0)

map+filter

function findAllOccurrences(arr, target) {
    return arr.map(function (v,i) {if (v===target) return i;  })
        .filter(function (t) { return t>=0; })
}
发表于 2017-11-21 15:51:46 回复(0)
function findAllOccurrences(arr, target) {
    var array = [];
    var tmp = 0;
    tmp = arr.indexOf(target);
    while (tmp != -1) {
        array.push(tmp);
        tmp = arr.indexOf(target, tmp + 1);
    }
    return array;
}
使用数组的indexOf方法
发表于 2017-08-27 11:29:27 回复(0)