let numbers = [89, 17, 156, 89, 156, 156, 89, 6, 89, 89, 30];
let uniqueNumbers = [];
for (let i = 0; i < numbers.length; i++) {
let count = 0;
for (let j = 0; j < numbers.length; j++) {
if (numbers[i] === numbers[j]) count++;
if (count > 1) break;
if (count === 1 && j === numbers.length - 1)
uniqueNumbers.push(numbers[i]);
}
}
console.log(uniqueNumbers);
// [17,6,30] должно получиться.
Можно сделать так:
const numbers = [89, 17, 156, 89, 156, 156, 89, 6, 89, 89, 30];
const arr = numbers.filter(e => numbers.indexOf(e) === numbers.lastIndexOf(e));
console.log(arr);
// [17,6,30] должно получиться.
Либо, если не важен изначальный порядок, то так:
const numbers = [89, 17, 156, 89, 156, 156, 89, 6, 89, 89, 30];
const arr = numbers.sort((a, b) => a - b);
const uniq = [];
for (let i = 0, last = 0; i < arr.length - 1; i++) {
if (arr[i] !== arr[i + 1] && last !== arr[i])
uniq.push(arr[i]);
last = arr[i];
}
console.log(uniq);
// [17,6,30] должно получиться.
Либо через двойной цикл:
const numbers = [89, 17, 156, 89, 156, 156, 89, 6, 89, 89, 30];
const uniq = [];
for (let i = 0, f = 0; i < numbers.length; (i++, f=0)) {
for (let j = 0; j < numbers.length; j++)
if (numbers[i] === numbers[j] && i !== j) f = 1;
if (!f) uniq.push(numbers[i]);
}
console.log(uniq);
// [17,6,30] должно получиться.
Сравнение производительности:
// [17, 6, 30] должно получиться
// Вариант А
const a = performance.now();
const numbersA = [89, 17, 156, 89, 156, 156, 89, 6, 89, 89, 30];
const arrA = numbersA.filter(e => numbersA.indexOf(e) === numbersA.lastIndexOf(e));
console.log(arrA);
console.log(performance.now() - a);
// Вариант Б
const b = performance.now();
const numbersB = [89, 17, 156, 89, 156, 156, 89, 6, 89, 89, 30];
const uniqB = [];
for (let i = 0, f = 0; i < numbersB.length; (i++, f = 0)) {
for (let j = 0; j < numbersB.length; j++)
if (numbersB[i] === numbersB[j] && i !== j) { f = 1; break; }
if (!f) uniqB.push(numbersB[i]);
}
console.log(uniqB);
console.log(performance.now() - b);
// Вариант В
const c = performance.now();
const numbersC = [89, 17, 156, 89, 156, 156, 89, 6, 89, 89, 30];
const arrC = numbersC.sort((a, b) => a - b);
const uniqC = [];
for (let i = 0, last = 0; i < arrC.length - 1; i++) {
if (arrC[i] !== arrC[i + 1] && last !== arrC[i])
uniqC.push(arrC[i]);
last = arrC[i];
}
console.log(uniqC);
console.log(performance.now() - c);
// Вариант Г (Ваш)
const g = performance.now();
const numbersG = [89, 17, 156, 89, 156, 156, 89, 6, 89, 89, 30];
const uniqG = [];
for (let i = 0; i < numbersG.length; i++) {
let count = 0;
for (let j = 0; j < numbersG.length; j++) {
if (numbersG[i] === numbersG[j]) count++;
if (count > 1) break;
if (count === 1 && j === numbersG.length - 1)
uniqG.push(numbersG[i]);
}
}
console.log(uniqG);
console.log(performance.now() - g);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты