เปเบเปเบงเบฅเบฒเบเบตเปเบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบชเบถเบเบชเบฒเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบญเบ algorithms, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบปเบเปเบซเบฑเบเบเบตเป
เบเบปเบโเบเบงเบฒเบกโเบเบตเปโเปเบกเปเบโเบเบฐโเปเบเบโเบเบญเบโเบเบฒเบโเบฎเปเบงเบกโเบเบฑเบโเบงเบดโเบเบตโเปเบญโเปเบเปโ. เปเบเบกเบฑเบเบเปเบญเบเปเบซเปเบเปเบฒเบเบดเบเบเปเบฒเปเบซเบฑเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเปเบเปเปเบเบเบฑเบเบซเบกเบปเบเบเบตเปเบชเบฐเปเบเบ, เบเบงเบเบเบฑเบเบเบฒเบเปเบเปเปเบเบชเบฐเบเบฑเบเบเบญเบเบเปเบญเบเปเบญเบเปเบ JavaScript. เบเบฒเบ nuances เบเบญเบเปเบเปเบฅเบฐ algorithm เปเบกเปเบเบเบฑเบเบชเบปเบเบเบฐเบเบฒ.
เบเบงเบเปเบฎเบปเบฒเปเบเบทเบญเบ: เบชเปเบฒเบฅเบฑเบเบเบนเปเบญเปเบฒเบเบเบฑเบเบซเบกเบปเบเบเบญเบ "Habr" - เบชเปเบงเบเบซเบผเบธเบ 10 rubles เปเบกเบทเปเบญเบฅเบปเบเบเบฐเบเบฝเบเปเบเบซเบผเบฑเบเบชเบนเบ Skillbox เปเบเบเปเบเปเบฅเบฐเบซเบฑเบเบชเบปเปเบเปเบชเบตเบก "Habr".
Skillbox เปเบเบฐเบเปเบฒ: เบซเบผเบฑเบเบชเบนเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ
"เบเบนเปเบเบฑเบเบเบฐเบเบฒเบกเบทเบเบท PRO" .
เบเบฒเบเบชเปเบฒเบเบเบฑเบเบซเบฒ
เบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบ array เบเปเบฒเบชเบฑเปเบเปเบฅเบฐเบเปเบฒเบชเบฐเปเบเบฒเบฐ. เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบกเบฑเบเบเบทเบเบฎเปเบญเบเบเปเปเบซเปเบชเปเบฒเบเบเบฑเบเบเบฑเบเบเบตเปเปเบซเปเบเบปเบเบเบญเบเปเบเบเปเบเบฑเบเบเบดเบเบซเบผเบทเบเบดเบเบเบถเปเบเบเบฑเบเบงเปเบฒเบเบปเบเบฅเบงเบกเบเบญเบเบชเบญเบเบเบปเบงเปเบฅเบเปเบเปเปเบเบญเบฒเปเบฃเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเบเบฑเบเบเปเบฒเบเบตเปเปเบซเป.
เปเบเบเปเบฒเบชเบฑเบเบเปเบฒเบเปเบญเบทเปเบเป, เบกเบตเบชเบญเบเบเปเบฒเบเบงเบเบขเบนเปเปเบ array, x เปเบฅเบฐ y, เบเบตเปเปเบกเบทเปเบญเบฅเบงเบกเปเบเบปเปเบฒเบเบฑเบเปเบเบปเปเบฒเบเบฑเบเบเปเบฒเบเบตเปเบเปเบฒเบเบปเบเปเบงเปเบเป?
เบเบปเบงเบขเปเบฒเบ A
เบเปเบฒเบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบ array [1, 2, 4, 9] เปเบฅเบฐเบเปเบฒเปเบกเปเบ 8, เบเบฑเบเบเบฑเบเบเบฐเบเบฑเบเบเบทเบ false เปเบเบฒเบฐเบงเปเบฒเบเปเปเบกเบตเบชเบญเบเบเบปเบงเปเบฅเบเปเบ array เบชเบฒเบกเบฒเบเปเบเบตเปเบกเปเบเปเปเบเบดเบ 8.
เบเบปเบงเบขเปเบฒเบ B
เปเบเปเบเปเบฒเบกเบฑเบเปเบเบฑเบ array [1, 2, 4, 4] เปเบฅเบฐเบเปเบฒเปเบกเปเบ 8, เบเบฑเบเบเบฑเบเบเบงเบเบเบฑเบเบเบทเบเบเบงเบฒเบกเบเบดเบเปเบเบฒเบฐเบงเปเบฒ 4 + 4 = 8.
เบเบฒเบโเปเบเปโเปเบ 1โ: เบเบปเบโเบเบฑเบโเบเบฑเบโเปเบเป Bruteโ
เบเบงเบฒเบกเบเบฑเบเบเปเบญเบเปเบงเบฅเบฒ: O(Nยฒ).
เบเบงเบฒเบกเบเบฑเบเบเปเบญเบเบเปเบญเบ: O(1).
เบเบงเบฒเบกเบซเบกเบฒเบเบเบตเปเบเบฑเบเปเบเบเบเบตเปเบชเบธเบเปเบกเปเบเบเบฒเบเบเปเบฒเปเบเปเบเบนเปเบเบญเบ loops เบฎเบฑเบ.
const findSum = (arr, val) => {
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr.length; j++) {
if (i !== j && arr[i] + arr[j] === val) {
return true;
};
};
};
return false;
};
เบเบฒเบเปเบเปเปเบเบเบตเปเบเปเปเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบเปเบเบฒเบฐเบงเปเบฒเบกเบฑเบเบเบงเบเปเบเบดเปเบเบเบธเบเปเบเบปเบเบฅเบงเบกเบเบตเปเปเบเบฑเบเปเบเปเบเปเบเบญเบเบชเบญเบเบญเบปเบเบเบฐเบเบญเบเปเบเบญเบฒเปเบฃเปเบฅเบฐเบเบฑเบเบเบฝเบเบเบฝเบเบเบธเบเบเบนเปเบเบญเบเบเบฑเบเบเบฐเบเบตเบชเบญเบเบเบฑเปเบ. (เบเบปเบงเบขเปเบฒเบ, เปเบกเบทเปเบญ i = 1 เปเบฅเบฐ j = 2 เบเบปเบงเบเบดเบเปเบฅเปเบงเปเบกเปเบเบเบทเบเบฑเบเบเบฑเบเบเบฒเบเบเบฝเบเบเบฝเบเบเบฑเบ i = 2 เปเบฅเบฐ j = 1, เปเบเปเปเบเบเบฒเบเปเบเปเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบฒเบเบฒเบกเบเบฑเบเบชเบญเบเบเบฒเบเปเบฅเบทเบญเบ).
เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเปเบเบฅเบนเบเบฑเปเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบเปเบเบนเปเบเบตเปเบเปเบญเบเบเบฑเบเบชเปเบฒเบฅเบฑเบ loops, เบกเบฑเบเปเบเบฑเบเบชเบตเปเบซเบฅเปเบฝเบกเบเบตเปเบกเบตเบเบงเบฒเบกเบเบฑเบเบเปเบญเบเปเบงเบฅเบฒ O(Nยฒ).
เบเบฒเบเปเบเปเปเบ 2: เบเบปเปเบเบซเบฒเบเบฒเบเบชเบญเบ
เบเบงเบฒเบกเบเบฑเบเบเปเบญเบเปเบงเบฅเบฒ: O(Nlog(N)).
เบเบงเบฒเบกเบเบฑเบเบเปเบญเบเบญเบฒเบงเบฐเบเบฒเบ: O(1).
เบเบฑเบเบเบฑเปเบเปเบเป arrays เบเบทเบเบเบฑเบเบฅเปเบฒเบเบฑเบ, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเบปเปเบเบซเบฒเบเบฒเบเปเบเปเปเบเปเบเบเปเบเป binary search. เบเบตเปเปเบกเปเบเบชเบนเบเบเบฒเบเบเบดเบเปเบฅเปเบเบตเปเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบเบเบตเปเบชเบธเบเบชเปเบฒเบฅเบฑเบ arrays เบเบตเปเบชเบฑเปเบ. เบเบฒเบเบเบปเปเบเบซเบฒ Binary เบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบเบกเบตเปเบงเบฅเบฒเปเบฅเปเบเบเบญเบ O(log(N)). เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเปเบฒเบเบเบฑเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเป a for loop เปเบเบทเปเบญเบเบงเบเปเบเบดเปเบเปเบเปเบฅเบฐเบญเบปเบเบเบฐเบเบญเบเบเบฝเบเบเบฑเบเบเปเบฒเบญเบทเปเบเปเบเบฑเบเบซเบกเบปเบ.
เบเบตเปเปเบกเปเบเบชเบดเปเบเบเบตเปเบเบฒเบเปเบเปเปเบเบญเบฒเบเบเบฐเปเบเบดเปเบเบเบทเบงเปเบฒ. เปเบเบทเปเบญเปเบฎเบฑเบเปเบซเปเบชเบดเปเบเบเบตเปเบเบฑเบเปเบเบ, เบเบงเบเปเบฎเบปเบฒเปเบเปเบเบฑเบเบเบฑเบเปเบเบเบเปเบฒเบเบซเบฒเบเปเบเบทเปเบญเบเบงเบเบเบธเบกเบเบฒเบเบเบปเปเบเบซเบฒเบเบนเป. เปเบฅเบฐเบเบฑเบเบเบฑเบเบเบฑเบ removeIndex() เปเบเบดเปเบเบชเบปเปเบเบเบทเบเปเบงเบตเบเบฑเบเบเบญเบ array เบฅเบปเบเบเบฑเบเบเบฐเบเบตเบเบตเปเปเบซเป.
const findSum = (arr, val) => {
for (let i = 0; i < arr.length; i++){
if (binarySearch(removeIndex(arr, i), val - arr[i])) {
return true;
}
};
return false;
};
const removeIndex = (arr, i) => {
return arr.slice(0, i).concat(arr.slice(i + 1, arr.length));
};
const binarySearch = (arr, val) => {
let start = 0;
let end = arr.length - 1;
let pivot = Math.floor(arr.length / 2);
while (start < end) {
if (val < arr[pivot]) {
end = pivot - 1;
} else if (val > arr[pivot]) {
start = pivot + 1;
};
pivot = Math.floor((start + end) / 2);
if (arr[pivot] === val) {
return true;
}
};
return false;
};
เบชเบนเบเบเบฒเบเบเบดเบเปเบฅเปเปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบเบเบฑเบเบเบฐเบเบต [0]. เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบกเบฑเบเบชเปเบฒเบเบชเบฐเบเบฑเบเบเบญเบ array เบเบตเปเบเปเปเบฅเบงเบกเปเบญเบปเบฒเบเบฑเบเบชเบฐเบเบตเบเปเบฒเบญเบดเบเปเบฅเบฐเปเบเปเบเบฒเบเบเบปเปเบเบซเบฒเบเบนเปเปเบเบทเปเบญเปเบเบดเปเบเบงเปเบฒเบเปเบฒเปเบเปเบเบตเปเบเบฑเบเปเบซเบผเบทเบญเบชเบฒเบกเบฒเบเบเบทเบเปเบเบตเปเบกเปเบชเป array เปเบเบทเปเบญเบเบฐเบฅเบดเบเบเบปเบเบฅเบงเบกเบเบตเปเบเปเบญเบเบเบฒเบ. เบเบณเบชเบฑเปเบเบเบตเปเบเบทเบเบเบฐเบเบดเบเบฑเบเบเบฑเปเบเบเบฝเบงเบชเบณเบฅเบฑเบเปเบเปเบฅเบฐเบญเบปเบเบเบฐเบเบญเบเปเบเบญเบฒเปเบฃ.
The for loop เบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบเบเบฐเบกเบตเบเบงเบฒเบกเบเบฑเบเบเปเบญเบเปเบงเบฅเบฒ linear เบเบญเบ O(N), เปเบเปเบเบฒเบเปเบ for loop เบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบตเบเบเบฒเบเบเบปเปเบเบซเบฒเบเบนเป, เปเบเบดเปเบเปเบฎเบฑเบเปเบซเปเบเบงเบฒเบกเบเบฑเบเบเปเบญเบเปเบงเบฅเบฒเปเบเบเบฅเบงเบกเบเบญเบ O(Nlog(N)). เบเบฒเบโเปเบเปโเปเบโเบเบตเปโเปเบกเปเบโเบเบตเบโเปโเบงเบฒโเบเบตเปโเบเปเบฒเบโเบกเบฒโ, เปเบเปโเบงเปเบฒโเบเบฑเบโเบกเบตโเบซเปเบญเบโเบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเบเบฑเบโเบเบธเบโ.
เบเบฒเบเปเบเปเปเบ 3: เปเบงเบฅเบฒเปเบชเบฑเปเบ
เบเบงเบฒเบกเบเบฑเบเบเปเบญเบเปเบงเบฅเบฒ: O(N).
เบเบงเบฒเบกเบเบฑเบเบเปเบญเบเบเปเบญเบ: O(1).
เปเบเบเบฑเบเบเบธเบเบฑเบเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเปเปเบเบเบฑเบเบซเบฒ, เบเบทเปเบเปเบฒเบงเปเบฒ array เบเบทเบเบเบฑเบเบฎเบฝเบ. เบเบฒเบโเปเบเปโเปเบโเปเบกเปเบโเบเบฐโเปเบญเบปเบฒโเบชเบญเบโเบเบปเบงโเปเบฅเบโ: เบซเบเบถเปเบโเปเบโเบเบญเบโเบเบปเปเบโเปเบฅเบฐโเบซเบเบถเปเบโเปเบโเบเบญเบโเบเปเบฒเบโ. เบเปเบฒเบเบปเบเปเบเปเบฎเบฑเบเปเบเบเบเปเบฒเบเบเบฒเบเบญเบฑเบเบเบตเปเบเปเบญเบเบเบฒเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบซเปเบเปเบฝเบเบเบธเบเปเบฅเบตเปเบกเบเบปเปเบเปเบฅเบฐเบเบธเบเบชเบดเปเบเบชเบธเบ.
เปเบโเบเบตเปโเบชเบธเบโเบเบงเบโเปเบฎเบปเบฒโเบเบฐโเบเบปเบโเบเบฑเบโเบเปเบฒโเบเบตเปโเบเปเบญเบโเบเบฒเบโเปเบฅเบฐโเบเบฑเบโเบเบทเบโเบกเบฒโเปเบเบฑเบโเบเบงเบฒเบกโเบเบดเบโ, เบซเบผเบทโเบเบธเบโเปเบฅเบตเปเบกโเบเบปเปเบโเปเบฅเบฐโเบเบธเบโเบชเบดเปเบโเบชเบธเบโเบเบฐ converge เปเบฅเบฐโเบเบฑเบโเบเบทเบโเบกเบฒโเปเบเบฑเบโเบเบดเบโ.
const findSum = (arr, val) => {
let start = 0;
let end = arr.length - 1;
while (start < end) {
let sum = arr[start] + arr[end];
if (sum > val) {
end -= 1;
} else if (sum < val) {
start += 1;
} else {
return true;
};
};
return false;
};
เปเบเบเบฑเบเบเบธเบเบฑเบเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบกเปเบเบเบต, เบเบฒเบเปเบเปเปเบเปเบเบดเปเบเบเบทเบงเปเบฒเบเบตเบเบตเปเบชเบธเบ. เปเบเปเปเบเบชเบฒเบกเบฒเบเบฎเบฑเบเบเบฐเบเบฑเบเบงเปเบฒ array เปเบเปเบเบทเบเบชเบฑเปเบ?
เปเบฅเปเบงเปเบกเปเบเบซเบเบฑเบ?
เบขเบนเป glance เบเปเบฒเบญเบดเบ, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบชเบฑเปเบเบเบฝเบเปเบเป array เบเปเบฒเบญเบดเบเปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบเปเบเบฒเบเปเบเปเปเบเบเปเบฒเบเปเบเบดเบ. เปเบเปเบเบตเปเบเบฐเบกเบตเบเบปเบเบเบฐเบเบปเบเปเบเบงเปเบเบเปเปเปเบงเบฅเบฒเบเบฐเบเบดเบเบฑเบ?
เบชเบนเบเบเบฒเบเบเบดเบเปเบฅเปเบเบตเปเบเบตเบเบตเปเบชเบธเบเปเบกเปเบเบเบฑเบเบฎเบฝเบเปเบงเบเบฑเบเบเบงเบฒเบกเบชเบฑเบเบชเบปเบเปเบงเบฅเบฒ O (Nlog (N)). เบเปเบฒเบเบงเบเปเบฎเบปเบฒเปเบเปเบกเบฑเบเปเบเบเบฒเบเปเบเปเปเบเบเบตเปเบเบตเบเบตเปเบชเบธเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เบกเบฑเบเบเบฐเบเปเบฝเบเบเบฐเบชเบดเบเบเบดเบเบฒเบเบเบญเบเบกเบฑเบเบเบฒเบ O(N) เปเบ O(Nlog(N)). เบกเบฑเบเปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเบเบญเบเบซเบฒเบงเบดเบเบตเปเบเปเปเบ linear เบเบฑเบ array unordered?
4 Solution
เบเบงเบฒเบกเบเบฑเบเบเปเบญเบเปเบงเบฅเบฒ: O(N).
เบเบงเบฒเบกเบเบฑเบเบเปเบญเบเบเปเบญเบ: O(N).
เปเบกเปเบเปเบฅเปเบง, เบกเบตเบเบฒเบเปเบเปเปเบเปเบชเบฑเปเบเบเบทเป; เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเปเบฒเบ array เปเบซเบกเปเบเบตเปเบกเบตเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบเบฒเบเปเบเปเบเบเบฑเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบฅเบฑเบเบเบญเบเบซเบฒ. เบเบฒเบเปเบฅเบเบเปเบฝเบเบเบตเปเปเบกเปเบเบเบฒเบเปเบเปเบเบงเบฒเบกเบเบปเบเบเปเบฒเบซเบผเบฒเบเบเบงเปเบฒเปเบเบปเปเบฒ: เบกเบฑเบเปเบเบฑเบเบเบฒเบเปเบเปเปเบเบเบฝเบเปเบเปเปเบเปเบเปเบเบเบตเปเบกเบตเบเบงเบฒเบกเบเบฑเบเบเปเบญเบเบเปเบญเบเบซเบผเบฒเบเบเบงเปเบฒ O(1).
เบเปเบฒเบเปเบฒเบเปเบฒเบญเบดเบเบเบญเบเบญเบฒเปเบฃเบเบตเปเปเบซเปเปเบกเปเบ 1 เปเบฅเบฐเบเปเบฒเบเบปเปเบเบซเบฒเปเบกเปเบ 8, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบเบตเปเบกเบเปเบฒ 7 เปเบซเปเบเบฑเบเบญเบฒเปเบฃ "เบเปเบฒเบเบปเปเบเบซเบฒ".
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เปเบกเบทเปเบญเบเบงเบเปเบฎเบปเบฒเบเบธเบเปเบเปเบเปเบเปเบฅเบฐเบญเบปเบเบเบฐเบเบญเบเบเบญเบเบญเบฒเปเบฅ, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเบงเบเปเบเบดเปเบ array เบเบญเบ "เบเปเบฒเบเบปเปเบเบซเบฒ" เปเบฅเบฐเปเบเบดเปเบเบงเปเบฒเบซเบเบถเปเบเปเบเบเบฑเปเบเปเบเบปเปเบฒเบเบฑเบเบกเบนเบเบเปเบฒเบเบญเบเบเบงเบเปเบฎเบปเบฒ. เบเปเบฒเปเบกเปเบ, เบเบฑเบเบเบทเบเบเบงเบฒเบกเบเบดเบ.
const findSum = (arr, val) => {
let searchValues = [val - arr[0]];
for (let i = 1; i < arr.length; i++) {
let searchVal = val - arr[i];
if (searchValues.includes(arr[i])) {
return true;
} else {
searchValues.push(searchVal);
}
};
return false;
};
เบเบทเปเบเบเบฒเบเบเบญเบเบเบฒเบเปเบเปเปเบเปเบกเปเบเบชเปเบฒเบฅเบฑเบ loop, เปเบเบดเปเบ, เบเบฑเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบเปเปเบซเบฑเบเบเปเบฒเบเปเบเบดเบ, เบกเบตเบเบงเบฒเบกเบเบฑเบเบเปเบญเบเปเบงเบฅเบฒเปเบชเบฑเปเบเบเบทเปเบเบญเบ O(N).
เบเบฒเบเบชเปเบงเบเบเบตเปเบเปเปเบฒเบเบฑเบเบเบตเบชเบญเบเบเบญเบเบเบฑเบเบเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบกเปเบ Array.prototype.include(), เบงเบดเบเบตเบเบฒเบ JavaScript เบเบตเปเบเบฐเบชเบปเปเบเบเบทเบเบเบงเบฒเบกเบเบดเบ เบซเบผเบทเบเบดเบ เบเบถเปเบเบเบฑเบเบงเปเบฒเบญเบฒเปเบฃเบกเบตเบเปเบฒเบเบตเปเปเบซเปเปเบงเปเบซเบผเบทเบเปเป.
เปเบเบทเปเบญเบเบดเบเปเบฅเปเบเบงเบฒเบกเบเบฑเบเบเปเบญเบเปเบงเบฅเบฒเบเบญเบ Array.prototype.includes(), เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบเบดเปเบ polyfill เบเบตเปเบชเบฐเบซเบเบญเบเปเบซเปเปเบเบ MDN (เปเบฅเบฐเบเบฝเบเปเบ JavaScript) เบซเบผเบทเปเบเปเบงเบดเบเบตเบเบฒเบเปเบเบฅเบฐเบซเบฑเบเปเบซเบผเปเบเบเบญเบเปเบเบทเปเบญเบเบเบฑเบ JavaScript เปเบเบฑเปเบ Google V8 (C++).
// https://tc39.github.io/ecma262/#sec-array.prototype.includes
if (!Array.prototype.includes) {
Object.defineProperty(Array.prototype, 'includes', {
value: function(valueToFind, fromIndex) {
if (this == null) {
throw new TypeError('"this" is null or not defined');
}
// 1. Let O be ? ToObject(this value).
var o = Object(this);
// 2. Let len be ? ToLength(? Get(O, "length")).
var len = o.length >>> 0;
// 3. If len is 0, return false.
if (len === 0) {
return false;
}
// 4. Let n be ? ToInteger(fromIndex).
// (If fromIndex is undefined, this step produces the value 0.)
var n = fromIndex | 0;
// 5. If n โฅ 0, then
// a. Let k be n.
// 6. Else n < 0,
// a. Let k be len + n.
// b. If k < 0, let k be 0.
var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
function sameValueZero(x, y) {
return x === y || (typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y));
}
// 7. Repeat, while k < len
while (k < len) {
// a. Let elementK be the result of ? Get(O, ! ToString(k)).
// b. If SameValueZero(valueToFind, elementK) is true, return true.
if (sameValueZero(o[k], valueToFind)) {
return true;
}
// c. Increase k by 1.
k++;
}
// 8. Return false
return false;
}
});
}
เบเปเปเปเบเบเบตเปเปเบกเปเบเบชเปเบงเบเบเบตเปเบเปเบณเบเบฑเบเบเบญเบ Array.prototype.include() เปเบกเปเบเบเบฒเบ loop เปเบเบเบฑเปเบเบเบญเบเบเบต 7 เบเบตเป (เปเบเบทเบญเบ) เบเปเบฒเบกเบเบงเบฒเบกเบเบฒเบงเบเบฑเบเปเบปเบเบเบญเบเบญเบฒเปเบฃเบเบตเปเปเบซเป. เบเบตเปเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบเบงเบฒเบกเบชเบฑเบเบชเบปเบเบเบตเปเปเบเปเปเบงเบฅเบฒเบเบญเบเบกเบฑเบเบเบฑเบเปเบเบฑเบเปเบชเบฑเปเบ. เบเบต, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบกเบฑเบเบชเบฐเปเบซเบกเบตเบซเบเบถเปเบเบเบฑเปเบเบเบญเบเบเบฒเบเบซเบฅเบฑเบเบเบญเบเบญเบฒเปเบฅเบเบปเปเบเบเปเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เบเบงเบฒเบกเบชเบฑเบเบชเบปเบเปเบงเบฅเบฒเปเบกเปเบ O (N + (N - 1)). เบเบฒเบเบเปเบฒเปเบเป Big O Notation, เบเบงเบเปเบฎเบปเบฒเปเบฎเบฑเบเปเบซเปเบกเบฑเบเบเปเบฒเบเปเบเบฑเบ O(N) - เปเบเบฒเบฐเบงเปเบฒเบกเบฑเบเปเบเบฑเบ N เบเบตเปเบกเบตเบเบปเบเบเบฐเบเบปเบเบเบตเปเบชเบธเบเปเบเปเบงเบฅเบฒเบเบตเปเปเบเบตเปเบกเบเบฐเบซเบเบฒเบเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบ.
เบเปเบฝเบงเบเบฑเบเบเบงเบฒเบกเบเบฑเบเบเปเบญเบเบเบฒเบเบเบงเปเบฒเบเบเบญเบเบเบทเปเบเบเบตเป, เบเปเบฒเปเบเบฑเบเบเปเบญเบเบกเบตเบญเบฒเปเบฃเปเบเบตเปเบกเปเบเบตเบกเบเบตเปเบเบงเบฒเบกเบเบฒเบงเบชเบฐเบเปเบญเบเบเบฑเบเบญเบฒเปเบฃเบเบปเปเบเบชเบฐเบเบฑเบ (เบฅเบปเบเบซเบเบถเปเบ, เปเบกเปเบเปเบฅเปเบง, เปเบเปเบงเปเบฒเบชเบฒเบกเบฒเบเบเบทเบเบฅเบฐเปเบฅเบตเบ), เบชเบปเปเบเบเบปเบเปเบซเป O(N) เบชเบฐเบฅเบฑเบเบชเบฑเบเบเปเบญเบ. เบเบต, เบเบฒเบเบเปเบฒเปเบเปเบเบงเบฒเบกเบเบปเบเบเปเบฒเบเบตเปเปเบเบตเปเบกเบเบถเปเบเบฎเบฑเบเบเบฐเบเบฑเบเบเบฐเบชเบดเบเบเบดเบเบฒเบเบชเบนเบเบชเบธเบเบเบญเบเบชเบนเบเบเบฒเบเบเบดเบเปเบฅเป.
เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบซเบงเบฑเบโเบงเปเบฒโเบเปเบฒเบโเบเบฐโเบเบญเบโเบซเบฒโเบเบปเบโเบเบงเบฒเบกโเบเบตเปโเปเบเบฑเบโเบเบฐโเปเบซเบเบโเปเบเบฑเบโเบเบฒเบโเปเบชเบตเบกโเบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเบชเปเบฒโเบเบฒเบโเบงเบดโเบเบตโเปเบญโเบเบญเบโเบเปเบฒเบโ. เบกเบฑเบเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบงเปเบฒเบเบฑเบเบซเบฒเบเบตเปเบเปเบฒเบเบเบฒเบเบชเบฒเบกเบฒเบเปเบเปเปเบเปเบเปเปเบเบซเบผเบฒเบเบงเบดเบเบตเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบเปเบงเบเบเบฐเบฅเบดเบกเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบเบญเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบตเปเปเบเป (เปเบงเบฅเบฒ, เบเบงเบฒเบกเบเปเบฒ).
Skillbox เปเบเบฐเบเปเบฒ:
- เบซเบผเบฑเบเบชเบนเบเบญเบญเบเปเบฅเบเปเบเบตเปเบชเบฐเบซเบกเบฑเบ
"เบเบฑเบเบงเบดเปเบเบฒเบฐเบเปเปเบกเบนเบ Python" .- เบซเบผเบฑเบเบชเบนเบเบญเบญเบเปเบฅเบ
"เบเบฑเบเบเบฑเบเบเบฐเบเบฒเบเปเบฒเบเบซเบเปเบฒเบเปเบฒเบเบงเบดเบเบฒเบเบตเบ" .- เบซเบผเบฑเบเบชเบนเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ
"เบเบฑเบเบเบฑเบเบเบฐเบเบฒ PHP เบเบฒเบ 0 เปเบเบดเบ PRO" .
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com