Код является частью программы, которая возвращает наибольшее число в массиве. Может кто-нибудь объяснить следующее? Спасибо
if (parseInt(nums[0]) < parseInt(nums[1])) { nums.splice(0,1); }
else { nums.splice(1,1); }
Основное - это понимание того, что .splice
делает MDN
Таким образом, он будет изменять свой массив путем удаления элемента в зависимости от пройденного Params
массив. splice (start [, deleteCount [, item1 [, item2 [,...]]]])
var nums = ["2", 4];
if (parseInt(nums[0]) < parseInt(nums[1])) {
nums.splice(0,1); // At index 0 remove 1 item
} else {
nums.splice(1,1); // At index 1 remove 1 item
}
console.log( nums ) // Modified array
PS:
nums[0]
nums[1]
[1, 1]
(одинаковые значения), ничего не произойдет.[1.9, 1]
- [1]
будет возвращен, так как вы используете parseInt
parseInt(value, radix)
например parseInt(nums[0], 10)
Поскольку вы написали NOOB, я думаю, что важно быть ясным.
Метод splice
удаляет 0 или более элементов из массива по указанному индексу и вставляет в этот индекс 0 или более элементов.
Подпись - someArray.splice(startNdx, deleteCount[,...itemsToInsert])
В коде, который вы опубликовали, эта часть
nums.splice(0,1);
начинается с индекса 0 и удаляет 1 элемент из массива. Другими словами, если массив был [5, 6, 7]
он стал бы [6, 7]
nums.splice(1,1);
Эта часть начинается с индекса 1 и удаляет 1 элемент из массива. Другими словами, если массив был [5, 6, 7]
он стал [5, 7]
.
Части parseInt
преобразуют строки в целые числа, которые предполагают, что массив содержит строки не числа (или может содержать строки). Предполагая, что массив содержит строки, то без части parseInt
он будет сравнивать строки, а не числа, которые являются другим типом сравнения. Поскольку вы не показывали содержимое массива, трудно точно знать, что он пытается сделать, но, например,
"00" < "0000"
верно, когда
parseInt("00") < parseInt("0000")
неправда. так же
"000_bob" < "000_jill" is true
но
parseInt("000_bob") < parseInt("000_jill")
неправда
Таким образом, код проверяет, является ли первое значение меньше второго, но оно сравнивается по целому числу, а не по строке.
Кто-то еще утверждал, что это плохой код, но это не плохой код, не зная контекста, который он использует.
[4.999, 4]
так как значения интерпретируются как целые числа. Так что это не очень хороший код. Он также изменяет массив, чтобы получить совокупное значение, что также не является хорошей практикой.