如何解决如何查找数组中相同元素的子序列
我正在为我的爱好任务寻找算法。
例如我们有测试数据案例:
var case1 = ['green','red','blue','green','green'];
var case2 = ['blue','yellow','orange','green'];
var case3 = ['purple','red'];
输出:
var result1 = ['red','green'];
var result2 = ['blue','green'];
var result3 = ['blue','blue'];
谁能告诉我应该使用哪种算法?重复的经典方式 - 不像我看的那样。
解决方法
所以在 javascript 中一个简单的实现是:
function selectSequential(source) {
var result = [];
for (let i = 0; i < source.length; i++) {
if ((i != source.length-1 && source[i+1] === source[i])
|| (i != 0 && source[i-1] === source[i])) {
result.push(source[i]);
}
}
return result;
}
,
短版
我们可以使用 .filter
函数来实现这种行为。
.filter((item,i,array) => array[i - 1] == item || item == array[i + 1])
let case1 = ['green','red','blue','green','green'];
let case2 = ['blue','yellow','orange','green'];
let case3 = ['purple','red'];
let result1 = case1.filter((item,array) => array[i - 1] == item || item == array[i + 1])
let result2 = case2.filter((item,array) => array[i - 1] == item || item == array[i + 1])
let result3 = case3.filter((item,array) => array[i - 1] == item || item == array[i + 1])
console.log(result1)
console.log(result2)
console.log(result3)
javascript 中的越界索引将返回 undefined
,它将在您的比较中评估为 false
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。