Ответ 1
Я считаю, что это лучший способ сделать это
var myArray = [100, 200, 100, 200, 100, 100, 200, 200, 200, 200],
reduced = Object.keys(myArray.reduce((p,c) => (p[c] = true,p),{}));
console.log(reduced);
UPDATE
Вот сценарий проблемы: https://jsfiddle.net/q9c5fku3/, когда я запускаю этот код и смотрю на консоль, я вижу, что console.ogging различное число в массиве.
Спасибо за ваши ответы, извините, что я получаю downvotes, но это меня действительно сбивает с толку.
Я пробовал это снова, используя разные цифры, мне интересно, можете ли вы, ребята, проверить эти цифры на своем конце и посмотреть, получится ли у вас другой результат?
var myArray = [621608617992776, 621608617992776, 10156938936550295, 621608617992776, 10156938936550295, 10156938936550295, 621608617992776, 10156938936550295];
console.log(myArray);
var myArrayTrimmed = [];
for(var i in myArray){
if(myArrayTrimmed.indexOf(myArray[i]) === -1){
myArrayTrimmed.push(myArray[i]);
}
}
console.log(myArrayTrimmed);
Это дает мне следующий массив в консоли:
[621608617992776, 10156938936550296]
По какой-то причине второе число увеличилось на 1.
====================
Оригинальный вопрос:
У меня есть этот массив:
var myArray = [100, 200, 100, 200, 100, 100, 200, 200, 200, 200];
Я пытаюсь создать новый массив с именем myArrayTrimmed
, который будет таким же, как и вышеупомянутый массив, за исключением того, что будет удален дубликат. Это должно привести к:
var myArrayTrimmed = [100, 200];
Это код, который я использую, чтобы добиться этого:
var myArray = [100, 200, 100, 200, 100, 100, 200, 200, 200, 200];
var myArrayTrimmed = [];
for(var i in myArray){
if(myArrayTrimmed.indexOf(myArray[i]) === -1){
myArrayTrimmed.push(myArray[i]);
}
}
console.log(myArrayTrimmed);
Это работает некорректно, в то время как он удаляет дубликаты, по какой-то причине он вычитает число 1
от 200, поэтому вывод в консоли:
[100, 199]
Я думаю, что это должно быть связано с -1
в коде, но я не знаю, как еще удалить дубликаты.
Я считаю, что это лучший способ сделать это
var myArray = [100, 200, 100, 200, 100, 100, 200, 200, 200, 200],
reduced = Object.keys(myArray.reduce((p,c) => (p[c] = true,p),{}));
console.log(reduced);
Вы можете использовать нижеприведенный код для эффективного удаления повторяющихся элементов -
var myArrayTrimmed = myArray.filter(function(elem, pos) {
return myArray.indexOf(elem) == pos;
});
ваш myArrayTrimmed будет содержать уникальные значения.
Надеюсь, это будет полезно
var myArray = [100, 200, 100, 200, 100, 100, 200, 200, 200, 200];
var myArrayTrimmed = [];
myArray.forEach(function(item){
if(myArrayTrimmed.indexOf(item) ==-1){
myArrayTrimmed.push(item);
}
})
console.log(myArrayTrimmed);
Отметьте jsfiddle