В JavaScript массивы могут быть созданы с использованием конструктора массива или быстро созданы с использованием [], что также является предпочтительным методом. Массив является прототипом, унаследованным от объекта, и он не имеет специального возвращаемого значения для типа, он только возвращает «объект».
1. Array.prototype.slice Метод
Метод среза массива обычно используется для извлечения фрагментов из массива. Тем не менее, он также обладает способностью преобразовать «массивы классов» (например, аргументы и HTMLCollection) в реальные массивы.
Кода -копия выглядит следующим образом:
var nodesarr = array.prototype.slice.call (document.forms);
var argsarr = array.prototype.slice.call (аргументы);
Мне было любопытно, почему метод срезов массивов обладает таким навыком, и как он реализован в двигателе JavaScript? Есть ли у братского метода срезов такие навыки?
С любопытством загрузите исходный код двигателя javaScript от Google V8 в локальную область. Адрес загрузки исходного кода V8: https://github.com/v8/v8.
Найти "array.prototype.slice" в V8-master/src/array.js:
Кода -копия выглядит следующим образом:
Функция ArraySlice (Start, End) {
Check_object_coercible (this, "array.prototype.slice");
...
var result = []; // это предложение является ключом
if (end_i <start_i) вернуть результат;
if (использует Pparsevariant (массив, Len, is_array (массив), end_i - start_i)) {
...
Sparseslice (массив, start_i, end_i - start_i, len, result);
} еще {
Simplislice (массив, start_i, end_i - start_i, len, result);
}
...
результат возврата;
Затем я предполагаю, что метод Simpleslice, который вызывает «массив классов», следует использовать, а затем поиск «simplislice» в исходном коде и обнаружил, что метод Simpleslice также вызывается в исходном коде массива. Однако, если вы хотите использовать метод сплайсинга для преобразования «массива классов» в реальный массив, вы должны передать параметр исходной позиции в 0, то есть:
Кода -копия выглядит следующим образом:
var nodesarr = array.prototype.splice.call (document.forms, 0);
Потому что его принцип реализации состоит в том, чтобы сформировать новый массив с помощью удаленных элементов массива. Если вы заинтересованы, вы можете проверить реализацию исходного кода Array.prototype.splice.
Кроме того, Slice также может клонировать массив:
Кода -копия выглядит следующим образом:
var arr = [1, 2, 3];
var clonearr = arr.slice (); // clonearr: [1, 2, 3]
2. Array.prototype.push Метод
Используйте метод push для слияния массивов:
Кода -копия выглядит следующим образом:
var arr1 = [1, 'str', {name: 'lang'}];
var arr2 = [2, 'ing'];
Array.prototype.push.apply (arr1, arr2);
// возврат результат: [1, "str", {name: 'lang'}, 2, "ing"]
3. Array.Prototype.sort Метод
Первый загрузите код:
Кода -копия выглядит следующим образом:
var arr = ['1', '2', '10', '12'];
arr.sort ();
// возврат результат: ["1", "10", "12", "2"]
Приведенные выше результаты обычно не то, что мы хотим, так как мы сортируем по численному размеру:
Кода -копия выглядит следующим образом:
arr.sort (function (a, b) {
вернуть A - B;
})
// Возврат результат: ["1", "2", "10", "12"]
С помощью функции сортировки компаратора вы можете настроить многих компараторов для достижения персонализированной сортировки.
4. Атрибут длины
Атрибут длины массива не только для чтения, что означает, что его можно записано. Например, используйте атрибут длины, чтобы усечь массив:
Кода -копия выглядит следующим образом:
var arr = [1, 2, 3, 4];
arr.length = 2;
// arr: [1, 2]
arr.length = 0;
// arr: []
В то же время, если атрибут длины увеличивается, значение длины массива увеличится, а не определяется в качестве нового элемента для заполнения.
Кода -копия выглядит следующим образом:
var arr = [];
arr.length = 3;
// arr: [неопределенная, неопределенная, неопределенная]
Хорошо, давайте закончим этот день. Уже рано утром. Если у вас появятся новые открытия в будущем, вы добавите его здесь.
Раньше у меня не было привычки писать блоги, но я привык только вкладывать свое обычное резюме в заметки Youdaoyun. Я не ожидал, что потребуется некоторая мысль, чтобы написать мои взгляды, потому что я должен был подумать о том, как выразить это, чтобы другие могли лучше понять это.
Если у вас есть какое -либо неправильное выражение или неправильное понимание, я надеюсь, что все могут помочь вам исправить меня.
Также прикрепили некоторые часто используемые методы массива JavaScript
concat () объединяет два или более массивов и возвращает результат.
join () помещает все элементы массива в строку. Элементы разделены указанными делимитерами.
pop () удаляет и возвращает последний элемент массива
push () добавляет один или несколько элементов к концу массива и возвращает новую длину.
Обратный () Обратный () меняет порядок элементов в массиве.
shift () удаляет и возвращает первый элемент массива
slice () возвращает выбранный элемент из существующего массива
sort () сортирует элементы массива
Splice () удаляет элемент и добавляет новые элементы в массив.
toSource () возвращает исходный код объекта
ToString () преобразует массив в строку и возвращает результат.
Tolocalestring () превращает массив в локальный массив и возвращает результат.
Unshift () добавляет один или несколько элементов в начало массива и возвращает новую длину.
valueof () возвращает исходное значение объекта массива