在浏览互联网并进行一些测试后,我实际上找不到解决方案。我试图找到最多 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/