[js] 写一个方法找到一维数组里,有且只有两个连续相等的所有元素

haizhilin2013
2021-02-13 04:39:49 星期六
js
                    
                        
写一个方法找到一维数组里,有且只有两个连续相等的所有元素
Comments per page
< Page 1 / 1 >
githubzml 2021-04-25 01:36:08
// 一维数组 有且只有两个连续相同的所有元素
let arr = [1, 2, 3, 3, 4, 4, 4, "a", "a", 6, 6, 6];

function change(arr, how) {
  if (how < 2) return;
  let num = 0;
  let obj = {};
  let otherArr = [];
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] == arr[i + 1]) {
      num++
      obj[arr[i]] = num;
    } else {
      num = 0;
    }
  }

  for (let key in obj) {
    // (how - 1) 出现几次
    if (obj[key] == (how - 1)) {
      otherArr.push(
        {
          value: key
        }
      )
    }
  }
  return otherArr;
}
// arr 数组
// 2 几个连续相同的
console.log('结果:', change(arr, 2));
JiraiyaChen 2021-12-31 06:44:03
function linxuchongfu() {
    // 写一个方法找到一维数组里,有且只有两个连续相等的所有元素
    let list = [12, 34, 34, 5, 6, 77, 77, 5, 44, 44, 6]
    let temp = []
    for (let i = 0; i < list.length; i++) {
        if (list[i] == list[i + 1]) {
            if (!temp.includes(list[i])) {
                temp.push(list[i])
            } else {
                temp.pop()
            }
        }
    }
    console.log(temp);
}
xyuh111 2022-06-09 07:52:10

let arr = [1, 2, 3, 3, 4, 4, 4, "a", "a", 6, 6, 6];
arr.map((it, index, arr) => (it === arr[index + 1] && it !== arr[index - 1] && it !== arr[index + 2])?it:null).filter(Boolean)

569504398 2022-07-20 01:12:55
function linxuchongfu() {
    // 写一个方法找到一维数组里,有且只有两个连续相等的所有元素
    let list = [12, 34, 34, 5, 6, 77, 77, 5, 44, 44, 6]
    let temp = []
    for (let i = 0; i < list.length; i++) {
        if (list[i] == list[i + 1]) {
            if (!temp.includes(list[i])) {
                temp.push(list[i])
            } else {
                temp.pop()
            }
        }
    }
    console.log(temp);
}

如果是四个连续相连的情况好像不太对哦

AppOrGameDev 2023-07-21 01:07:23
        let arr = [1, 2, 3, 3, 4, 4, 4,4, 4, 4, "a", "a", 6, 6, 6,6, 6, 4, 4, 4]

        function onlytwoequal(arr) {
            let result = []
            for (let i = 0; i < arr.length; i++) {
                if (i + 1 >= arr.length) {
                    // 当前是最后一个元素
                    break
                }
                if (arr[i] == arr[i + 1]) {
                    // 当前元素跟下一个元素相等
                    if (i + 2 >= arr.length || arr[i] != arr[i + 2]) {
                        //下二个元素不存在或者当前元素跟下二个元素不等
                        result.push(arr[i])
                        i++
                    } else {
                        if (i + 3 >= arr.length) {
                            i = i + 2
                        }
                        // 去掉连续相等的元素
                        for (let j = 3; i + j < arr.length; j++) {
                            if (arr[i] != arr[i + j]) {
                                i = i + j - 1
                                break
                            }
                        }
                    }
                }
            }
            return result
        }
        console.log(onlytwoequal(arr))
Ghaining 2023-08-05 15:14:31
function find(arr) {
  let result = [];
  for (let i = 1; i < arr.length; i++) {
    if (result.includes(arr[i])) {
      result = result.filter((item) => item !== arr[i]);
      continue;
    }
    if (arr[i] === arr[i - 1]) {
      result.push(arr[i]);
    }
  }
  return result;
}

TheZhuKing 2023-11-16 06:17:22
// 将连续相等的所有情况都找出 过滤剩余两个连续相等  借鉴csdn

let oldArr = [1,1,,2,3,3,3,7,8,9,15,17,17,18,19,19,19];

function fn(arr){
var result = [],
i = 0;
result[i] = [arr[0]];
arr.reduce(function(prev, cur){

cur === prev ? result[i].push(cur) : result[++i] = [cur];
return cur;

});
return result;
}

let res= fn(oldArr).filter(item=>item.length == 2)
console.log(res); // console: [[1,1] , [17,17]]

Comments per page
< Page 1 / 1 >
排行榜
今日答题答题排行
    未答的题
    更多>
      【关注作者公众号】 以面试驱动学习--前端剑解
      【公众号推荐】 不折腾的前端和咸鱼有什么区别

      学习不打烊,充电加油只为遇到更好的自己,365天无节假日,每天早上5点纯手工发布前端知识点(死磕自己,愉悦大家)。希望大家在这浮夸的前端圈里,保持冷静,坚持每天花20分钟来学习与思考。在这千变万化,类库层出不穷的前端,建议大家不要等到找工作时,才狂刷题,提倡每日学习!欢迎大家关注3+1开源项目!希望大家每人去学习与思考!(不要为了谁而来,要为自己而努力!

      【关注官方公众号】 每天4:30-5:00推送
      【公众号推荐】 一起折腾前端算法
      【微信学习群】 备注3+1