首页 > 解决方案 > 我无法从数组中删除相邻的值

问题描述

我试图删除adjacent duplicates但不是想要的结果(3 个结果)我只得到2 个结果

我的预期输出:

 [{"mw://HOME_BIN":{"position":0}},{"mw://diagnosis_HOME":{"position":3}},{"mw://HOME_BIN":{"position":3}}]

这是我尝试过的:

var arr = [{"mw://HOME_BIN":{"position":0}},{"mw://diagnosis_HOME":{"position":3}},{"mw://HOME_BIN":{"position":3}},{"mw://HOME_BIN":{"position":3}}];
var nArr = [];
for(var i = 0; i < arr.length;++i){
   var key1 = Object.keys(arr[i]).join('');
   var nLength = ((i + 1) > arr.length - 1 ) ? 0 : i + 1;
   var key2 = Object.keys(arr[nLength]).join('');
   if(key1 == key2) continue;
      nArr.push(arr[i]);
}

console.log(nArr);

从上面的结果你可以看到又少了一个元素

标签: javascriptjquerynode.js

解决方案


var arr = 
    [
      {"mw://HOME_BIN":{"position":0}},
      {"mw://diagnosis_HOME":{"position":3}},
      {"mw://HOME_BIN":{"position":3}},
      {"mw://HOME_BIN":{"position":3}}
    ];

var nArr = [];

arr.forEach((ar,index) => {
  if(index === arr.length - 1) {
    nArr.push(ar);
    return;
  }
  
  if(JSON.stringify(ar) !== JSON.stringify(arr[index+1])){
    nArr.push(ar);
  }
})

console.log(nArr);
	

您可以使用JSON.stringify比较整个对象而不是使用单个键,以实现可扩展性


推荐阅读