【发布时间】:2018-07-12 04:06:42
【问题描述】:
我有一个像var arr = [5, 5, 5, 2, 2, 2, 2, 2, 9, 4, 5, 5, 5]; 这样的数组,我真的希望输出是[5,2,9,4,5]。我的逻辑是:
- 一个一个地遍历所有元素。
- 如果元素与前一个元素相同,则计算元素并执行
newA = arr.slice(i, count)之类的操作 - 新数组应该只填充相同的元素。
- 对于我的示例输入,前 3 个元素是相同的,因此
newA将类似于arr.slice(0, 3)和newB将是arr.slice(3,5)等等。
我试着把它变成下面的代码:
function identical(array){
var count = 0;
for(var i = 0; i < array.length -1; i++){
if(array[i] == array[i + 1]){
count++;
// temp = array.slice(i)
}else{
count == 0;
}
}
console.log(count);
}
identical(arr);
我在弄清楚如何输出一个表示数组中相同的一组元素的元素时遇到了问题。如果元素不相同,则应按其在原始数组中的顺序输出。
【问题讨论】:
-
你能给个jsfiddle.net吗?
-
你为什么要对数组进行切片?
-
“输出代表一组元素的元素”是什么意思?您可以轻松删除重复,但这与“输出”有什么关系?也许您想要一个跟踪重复的数据结构,尽管原始数组已减少?
-
那么预期的输出:
[5,2,9,4,5]或[[5, 5, 5], [2, 2, 2, 2, 2], 9, 4, [5, 5, 5]]或其他什么? -
@Grundy [5,2,9,4,5]...我想切片,因为我不知道如何拆分相同的部分,以便获得数字跨度>
标签: javascript arrays