javascript - 查找满足条件的数组索引的位置
问题描述
我是 ES6 的新手,正在尝试学习如何编写一个函数来查找第一个数组索引号,其中大多数 0 一起出现 - 例如:
var arr = [0,0,1,0,0,0,1,1,0] // should return index 3
var arr = [0,0,1,0,0,0,1,1,0,0,0,0] // should return index 8
var arr = [0,0,1,0] // should return index 0
不知道为什么,但我的尝试只是返回一个空数组,而不是一个索引从 0 变为 1 的数组:
var arr = [0,0,1,0,0,0,1,1,0];
function amounts(c, i, arr) {
var zeros = 0, onesTogether = 0, where = [], changes = 0, longest0s;
if (c === 0 && arr[i+1] === 0 || c === 0 && arr[i-1] === 0) {
zeros++;
} else {
longest0s = zeros;
zeros = 0;
changes++;
where.push[i];
}
console.log('longest0s: ' + longest0s + '. changes: ' + changes + '. where: ' + where);
return where;
}
arr.reduce(amounts);
我不知道如何找到大多数 0 一起的起始索引,但不知道为什么数组为空。有任何想法吗?
这应该返回 [2,6,7] 的数组
[0,0,1,0,0,0,1,1,0]
解决方案
总体思路:找到最长的 0s 子串并检查它的索引。
您可以尝试:
const find = arr => {
const str = arr.join('');
const longest = str.split(1).reduce((a, b) => a.length > b.length ? a : b);
return str.indexOf(longest);
}
console.log(find([0,0,1,0,0,0,1,1,0])); // 3
console.log(find([0,0,1,0,0,0,1,1,0,0,0,0])); // 8
console.log(find([0,0,1,0])); // 0
推荐阅读
- javascript - 如何从一行文本中删除一个字符
- hibernate - JPQL 多对多与 in 子句
- c# - C# FFT 实现未产生预期结果
- epplus - 使用 EPPlus 计算百分位数
- c# - FolderbrowserDialog 在发布版本(WindowsForms)中不展开“SelectedFolder”
- wordpress - 如何将 ACF 转发器设置为每行仅显示 X 个项目
- python - 在python中使用正则表达式匹配任何字符和/或未定义的换行符
- android - 如何在 Android Q 的外部存储中创建目录?
- liquibase - Liquibase 不适用于更改 Spring Boot 配置文件
- python - Python/Flask - 通过从 Jupyter Notebook 传递路径来上传文件