从随机选择的数组中删除重复项

时间:2018-09-18 05:07:59

标签: javascript jquery

我有以下代码试图从随机选择的数组项中删除重复项,但是它没有用

items []是包含它的数组,我用sript删除重复项。

我如何更改它以删除重复项

怎么了?

window.onload = rnumber();
function rnumber() {
  const
    items = [  
      { label: '1', url: '1.jpg'  },
      { label: '2', url: '2.jpg'  },
      { label: '3', url: '3.jpg'  },
      { label: '4', url: '4.jpg'  },
      { label: '5', url: '5.jpg'  },
      { label: '6', url: '6.jpg'  },
      { label: '7', url: '7.jpg'  },
      { label: '8', url: '8.jpg'  },
      { label: '9', url: '9.jpg'  },
      { label: '10',url: '10.jpg' }
          ];

  
var lastnumber=0;
for (let index = 0; index < 9; index++) 
  {
      randomIndex = Math.floor(Math.random() * items.length);
      
	 if(lastnumber!=randomIndex)
	 {
      item = items[randomIndex];
      lastnumber=randomIndex;
	  
	  console.log(randomIndex);
	  }
	  else
	  {
	  rnumber()
	  }
	  	 
  }

}

3 个答案:

答案 0 :(得分:1)

您可以使用reduce消除重复项

const distinctShuffle = array =>
  array ? array.reduce((arr, item) => {
    if (!(item in arr)) {
      arr.splice(Math.floor(Math.random() * (arr.length + 1)), 0, item);
    }
    return arr;
  }, []) : array;


function rnumber() {
  const items = [  
      { label: '1', url: '1.jpg'  },
      { label: '2', url: '2.jpg'  },
      { label: '3', url: '3.jpg'  },
      { label: '4', url: '4.jpg'  },
      { label: '5', url: '5.jpg'  },
      { label: '6', url: '6.jpg'  },
      { label: '7', url: '7.jpg'  },
      { label: '8', url: '8.jpg'  },
      { label: '9', url: '9.jpg'  },
      { label: '10',url: '10.jpg' }
          ];

  
      return distinctShuffle(items);
}

console.log(rnumber());

答案 1 :(得分:0)

您的代码中有一些语法错误。注意在语句结尾使用分号-而不是逗号。

如果您使用的是ES6,则可以编写如下内容:

let distinct = [...new Set(items.map(item => item.label))]

答案 2 :(得分:0)

使用以下简单功能通过jquery从数组中删除重复项

var YourArray = [  
{ label: '1', url: '1.jpg'  },

{ label: '1', url: '2.jpg'  },

{ label: '3', url: '3.jpg'  },

{ label: '4', url: '4.jpg'  },

{ label: '1', url: '5.jpg'  },

{ label: '6', url: '6.jpg'  },

{ label: '1', url: '7.jpg'  },

{ label: '8', url: '8.jpg'  },

{ label: '9', url: '9.jpg'  },

{ label: '10',url: '10.jpg' }
          ];
   var SortedArray = YourArray.filter(
                 function(a){if (!this[a.label]) {this[a.label] = 1; return a;}},
                 {}
                );
                alert(JSON.stringify(SortedArray));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>