获取Javascript数组的唯一值
我试图用JavaScript编写一个函数来获得唯一的值数组,但我的代码不能正常工作。我知道还有其他更好更简单的方法,但我不明白为什么我的代码不起作用,我想理解它 该函数有两个for循环,如果外部索引和内部索引不同,并且这些索引位置的值相同,则内部索引的位置将被推送到另一个数组。当内部for循环结束时,另一个数组中指定的索引将在原始数组中替换为空值,以便稍后删除 输入是:12343445 但是输出是:1 2空空空空空空空空空空空4 4 5 5 5 5 我不知道出了什么问题,有人能帮我吗获取Javascript数组的唯一值,javascript,arrays,unique-values,Javascript,Arrays,Unique Values,我试图用JavaScript编写一个函数来获得唯一的值数组,但我的代码不能正常工作。我知道还有其他更好更简单的方法,但我不明白为什么我的代码不起作用,我想理解它 该函数有两个for循环,如果外部索引和内部索引不同,并且这些索引位置的值相同,则内部索引的位置将被推送到另一个数组。当内部for循环结束时,另一个数组中指定的索引将在原始数组中替换为空值,以便稍后删除 输入是:12343445 但是输出是:1 2空空空空空空空空空空空4 4 5 5 5 5 我不知道出了什么问题,有人能帮我吗 fun
function uniqueArrayValues(vector) {
var indexRepeated = [];
for (let i in vector) {
for (let j in vector) {
if (vector[i] == vector[j] && i != j && j != null && i != null && i < j ) {
indexRepeated.push(j);
}
}
for (let i in indexRepeated) {
if (vector[indexRepeated[i]] != null) {
vector.splice(vector[indexRepeated[i]], 1, null);
}
}
}
}
函数唯一数组值(向量){
var指数重复=[];
for(让我输入向量){
for(设j为向量){
如果(向量[i]==向量[j]&&i!=j&&j!=null&&i!=null&&i
你就快到了
方法的第一个参数是开始索引,即开始更改数组的索引
在代码中,vector.splice(vector[indexRepeated[i]],1,null)
您在vector
数组中传递的是该索引处的值,而不是该索引。这就是产生意外输出的原因
只需将该行更改为vector.splice(indexRepeated[i],1,null)代码>和过滤器null
值
现场示例:
函数唯一数组值(向量){
var指数重复=[];
for(让我输入向量){
for(设j为向量){
如果(向量[i]==向量[j]&&i!=j&&j!=null&&i!=null&&ivalue!==null);//也可以使用vector.filter(value=>value);
}
var arr=[1,2,2,3,3,4,4,4,4,5,5,5,5];
console.log(uniquearrayvalue(arr))代码>从数组中获取所有唯一值的简单方法是将数组转换为一个集合
let arr = [1,2,2,3,3,3,4,4,4,5,5,5,5,5];
let uniqueArr = new Set(arr);
console.log(uniqueArr); ///Set { 1, 2, 3, 4, 5 }
正如您所想,只需像这样定义函数
function uniqueArrayValues(vector) {
//var indexRepeated = [];
for (let i in vector) {
for (let j in vector) {
if (vector[i] == vector[j] && i < j ) {
vector[j]=null;
}
}
}
}
函数唯一数组值(向量){
//var指数重复=[];
for(让我输入向量){
for(设j为向量){
if(向量[i]==向量[j]&&i
indexRepeated的循环异常。
顺便说一下,您可以更改这些代码vector.splice(vector[indexRepeated[i]],1,null)代码>到向量拼接(索引重复[i],1,空)代码>,它也工作了。Array.from(新集合([1,1,2,3])