Javascript 查找满足条件的数组的所有实例,而不仅仅是第一个实例

Javascript 查找满足条件的数组的所有实例,而不仅仅是第一个实例,javascript,Javascript,在浏览互联网和做一些测试之后,我实际上找不到解决方案。我试图找到0最多的地方的索引。例如,它应该返回3和6: var arr1 = [1,0,1,0,0,1,0,0,1,1]; var joined1 = arr1.join(''); // "1010010011" var ans = joined1.indexOf("00"); // returns 3 - want to return 3 & 6 这应该返回1和5: var arr2 = [1,0,0,0,1,0,0,0,1,0,

在浏览互联网和做一些测试之后,我实际上找不到解决方案。我试图找到0最多的地方的索引。例如,它应该返回3和6:

var arr1 = [1,0,1,0,0,1,0,0,1,1];
var joined1 = arr1.join(''); // "1010010011"
var ans = joined1.indexOf("00"); // returns 3 - want to return 3 & 6
这应该返回1和5:

var arr2 = [1,0,0,0,1,0,0,0,1,0,0,1,1];
var joined2 = arr2.join(''); // "10001000100111"
var ans2 = joined2.indexOf("000"); // returns 1 - want to return 1 & 5

问题是indexOf只返回第一个索引,而不是两个索引。如何让它返回满足条件的所有实例?感谢您提供的帮助

看来您更多地关注的是字符串操作,而不是数组操作。在这种情况下,我可以帮助你。特别是函数参数。请注意,下面的代码不会转义特殊的正则表达式字符,如

function findAll(string, value) {
    var indices = [];
    string.replace(new RegExp(value, "g"), function (m, o) {
        indices.push(o);
    });
    return indices;
}

看起来您更多地关注的是字符串操作,而不是数组操作。在这种情况下,我可以帮助你。特别是函数参数。请注意,下面的代码不会转义特殊的正则表达式字符,如

function findAll(string, value) {
    var indices = [];
    string.replace(new RegExp(value, "g"), function (m, o) {
        indices.push(o);
    });
    return indices;
}

这很有效。从反向搜索字符串,存储索引并获取子字符串,该子字符串应在其上再次迭代

函数findIndex(arr,值)
{
var str=arr.join(“”),index=0,result=[];
而(索引>-1)
{
索引=str.lastIndexOf(值)
索引>-1&(result.push(index),str=str.substring(0,index-1));
}
返回result.reverse();
}
log(findIndex([1,0,1,0,0,1,0,0,1,1],“00”);
日志(FindIndex([1,0,0,0,1,0,0,0,0,1,0,0,0,1,1],“000”);

console.log(Findindex([1,0,1,0,0,1,0,0,1],“0000”)这是有效的。从反向搜索字符串,存储索引并获取子字符串,该子字符串应在其上再次迭代

函数findIndex(arr,值)
{
var str=arr.join(“”),index=0,result=[];
而(索引>-1)
{
索引=str.lastIndexOf(值)
索引>-1&(result.push(index),str=str.substring(0,index-1));
}
返回result.reverse();
}
log(findIndex([1,0,1,0,0,1,0,0,1,1],“00”);
日志(FindIndex([1,0,0,0,1,0,0,0,0,1,0,0,0,1,1],“000”);

log(findIndexes([1,0,1,0,0,1,0,0,1,1],“0000”)这里提供了一个通用解决方案,用于查找n个连续匹配的索引,即连续匹配的第一个索引或连续匹配的所有索引:

函数查找元素索引(arr、搜索、时间、所有键){
var indexs=[]
设连续数=0;
arr.map((o,i)=>{

如果(o==search){/这里有一个通用的解决方案来查找n个连续匹配的索引,只需连续匹配的第一个索引或连续匹配的所有索引:

函数查找元素索引(arr、搜索、时间、所有键){
var indexs=[]
设连续数=0;
arr.map((o,i)=>{

如果(o==search){//可能重复。请看这里:您必须在它上面循环多次并使用startFrom参数。可能重复。请看这里:您必须在它上面循环多次并使用startFrom参数。有趣的是,“g”是什么部分在这里播放?函数中的“m”是什么?我试图理解它是如何工作的。
g
代表全局,意味着匹配字符串的每个实例。
m
是匹配的部分,但我们不需要它。但是,既然它是第一个参数,我们必须包含它。有趣的是,“g”是什么部分在这里播放?函数中的“m”是什么?我试图理解它是如何工作的。
g
代表全局,意味着匹配字符串的每个实例。
m
是匹配的部分,但我们不需要它。但是,因为它是第一个参数,所以我们必须包含它。