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,1,1];
var joined2 = arr2.join(''); // "10001000100111"
var ans2 = joined2.indexOf("000"); // returns 1 - want to return 1 & 5

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

最佳答案

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

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

关于javascript - 查找满足条件的数组的所有实例,而不仅仅是第一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51521721/

相关文章:

javascript - Ember.js - "Cannot perform operations on a Metamorph that is not in the DOM"由模板引起

javascript - 如何通过另一个div调整文本区域的大小

javascript - 使用 javascript 或 jquery 获取图像大小

javascript - 使用 Tablesorter 按列中选定选项的选择进行过滤

javascript - 为什么 dragstart 中的 event.preventDefault() 会中断进一步拖动事件的执行?

javascript - 如何防止 parameter 1 is not of type 'Node' 错误?

Javascript 通过 "page"初始化函数

javascript - 超时不超时

javascript - 单击时使用javascript使图像变大

javascript - 创建 24 小时倒计时并在到达一天中的特定时间后重置的最佳方法是什么?