Добрый день, столкнулся с проблемой написал небольшой скрипт для проверки элементов массивов (проверка чтобы все жлементы первого массива совпадали с первыми в остальных массивах, 1й и 2й должны совпадать по длинне)
function checkArr(){
let array = Array.from(arguments);
for (let i = 0; i < array.length; i++){
for(let x = 0; x < array[0].length; x++){
if (array[i][x]!==array[x][x]){
return false
}
}
}
return array[0].length===array[1].length?true:false;
}
Так вот в чем вопрос, почему скрипт работает с этим кодом проверки
console.log(checkArr([1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4,5,6,7],[1,2,3,4],[1,2,3,4,5,6,7,8,9])); // true
console.log(checkArr([1,2,3],[1,2,3],[1,2,3,4,5,6],[1,2,3,4,5,6,7,8,9])); // true
console.log(checkArr([1,2,3],[1,3,3],[1,2,3,4,5,6])); // false
console.log(checkArr([1,2,3],[1,2,3],[1,2])); // false
и не работает с вот этим
const first0 = [347,270,384];
const second0 = [176,220,438];
const third0 = [222];
const first1 = [224,250,362,389,455,182,245,212,436];
const second1 = [415,165,402,235,486];
const third1 = [153,105];
const first2 = [167,484,22];
const second2 = [167,484,22];
const third2 = [167,484,22,245,365,442,393,256,282,37,384,47,430,189,74,81];
const first3 = [286,173,416,43,425,487,407];
const second3 = [57,247,275,118,416,224,176,42];
const third3 = [87,169,11,92,85,381];
const first4 = [57,330];
const second4 = [498,272,221,268,196,308,200,90,4];
const third4 = [234,72,42,310,424,29,392,332,426];
const first5 = [290,332,64];
const second5 = [290,332,64];
const third5 = [290,332,64,145,332,193,323];
const first6 = [279,179,385];
const second6 = [279,179,385];
const third6 = [279,179,385,228,395,230,141,77,352,65,24,180];
const first7 = [204,26,270];
const second7 = [204,26,270];
const third7 = [204,26,270,458,222,94,285,242,387,92,279,70,335,474,319];
const first8 = [158,81,464,84];
const second8 = [158,81,464,84]
const third8 = [158,81,464,84,245,221,152,438,42,32,397,486,103];
const first9 = [294,394,290,231];
const second9 = [294,394,290,231];
const third9 = [294,394,290,231,94,58,325,415];
const first10 = [52,29,367,229,42,241,459,369];
const second10 = [428,337,42,496,427,358,391,177,305,437];
const third10 = [284,438,30];
const first11 = [210,201,155];
const second11 = [210,201,155];
const third11 = [210,201,155,457,489,410,200,250,109,347,105,164,176,364,199];
// Speed test
const average = arr => {
let total = 0;
for (let i = 0; i < arr.length; i++) {
total += arr[i];
}
return total / arr.length;
};
const timeDiff = [];
let t0, t1;
for (let i = 0; i < 20; i++) {
t0 = performance.now();
for (let j = 0; j < 100000; j++) {
checkArr(first0, second0, third0);
checkArr(first1, second1, third1);
checkArr(first2, second2, third2);
checkArr(first3, second3, third3);
checkArr(first4, second4, third4);
checkArr(first5, second5, third5);
checkArr(first6, second6, third6);
checkArr(first7, second7, third7);
checkArr(first8, second8, third8);
checkArr(first9, second9, third9);
checkArr(first10, second10, third10);
checkArr(first11, second11, third11);
}
t1 = performance.now();
timeDiff[i] = t1 - t0;
}
console.log(average(timeDiff));
вываливается ошибка на 8й, 10й (и вообще когда как) строках
checkArr(first8, second8, third8); //8я
checkArr(first10, second10, third10); //10я
Uncaught TypeError: Cannot read property '3' of undefined at checkArr
вот тут
if (array[i][x]!==array[x][x])
последний x.
Мои умозаключения: Если я правильно понимаю то это говорит о том, что в этот array[3][3] (раз пишет что проперти "3") - нам не приходит массив. Собственно склоняюсь к тому, что какие-то ограничения или я неправильно работаю с arguments.
Прошу помощи, только начинаю учиться. Спасибо
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости