1. Индекс и последовательность методов:
Поскольку IE7 сообщит об ошибке с использованием индекса на объекте массива, необходимо переписать совместимость.
Кода -копия выглядит следующим образом:
Array.prototype.lastindexof (item, index) {
var n = this.length, i = (index == null || index> n-1)? n-1: index;
if (i <0) i = n+i;
for (; i> = 0; i--)
if (this [i] === item) // concolidar sudge, indexof, lastindexof
вернуть я;
возврат -1;
}
2. Метод удара: перетасовать массив.
Кода -копия выглядит следующим образом:
Функция Shuffle (Target) {
var i = target.length, j, temp;
for (; i> 0; j = parseint (math.random () * i), x = target [-i], target [i] = target [j], target [j] = x) {}
// Предполагая длину = 10, затем после Math.Random ()*10-> [0,10), Parseint, [0,9], случайным образом выберите один и обменивайте его с последним элементом в массиве. Вторая петля, [0,8], обменивается предпоследним сроком массива.
вернуть цель;
}
3. ПРОЦЕССА ПРОЦЕССА: УДОВЛЯТЬ, верните одномерный массив
Кода -копия выглядит следующим образом:
Функция сглаживает (arr) {
var result = [];
arr.foreach (function (item) {
if (array.isarray (item)) result.concat (щедрый (элемент));
else result.push (item);
});
результат возврата;
}
4. Уникальный метод: операция дедупликации массива
Этот метод - интервьюер любит спрашивать, потому что у него есть несколько методов реализации, наиболее распространенным является два для петли. Самое распространенное, что я знаю, - это использовать объект A, а затем A для массива цикла Arr. Каждый раз, если (ARR [i])) существует, и если его не существует, он будет подталкиваться в ваш недавно определенного результата массива. Существование доказывает, повторяется, поэтому нет необходимости вталкивать в результат. Это решение, для «123», 123, будет считаться таким же. На самом деле, одна - это строка, а другой - это число, и не следует считать таким же.
Итак, появляется следующий метод: [1, "1", "1"]
Кода -копия выглядит следующим образом:
if ((typeof obj [array [i]])! = (typeof array [i]) || obj [array [i]]! = Array [i]) {
A.Push (массив [i]);
obj [Array [i]] = массив [i];
}
// сначала определяют, одинаковы ли типы. Если они одинаковы, определите, равны ли их значения. Если они не равны, они будут спасены. Если они равны, они докажут, что это значение существовало ранее.
Если типы разные, здесь есть две ситуации.
В первом случае OBJ уже сохранил эти данные ранее, например: OBJ [123] = 123, теперь массив [i] = "123". В настоящее время TypeOf obj [Array [i]]) - это число, а массив типа [i] - это строка, поэтому он хранится в массиве.
Второй случай заключается в том, что OBJ еще не сохранил эти данные, например: Array [i] = "123", OBJ ["123"] = не определен. В настоящее время TypeOf obj [Array [i]]) является типом undefined = не определено, что не равняется массиву типа [i] и хранится в массиве.
Этот метод может решить ситуацию, когда строки и числа одинаковы, но не могут решить ситуацию, когда объекты одинаковы. Например: a = {1: 2}, b = {2: 1};
Когда первый цикл, тип obj [a] = не определен, тип a = объект. Депозит obj [a] = а. На самом деле, obj [Object] = a;
Во втором цикле TypeOf OBJ [B] равен типа OBJ [объект], который фактически является TypeOF a = объект, typeOF B = объект. Поэтому он входит в OBJ [Array [i]]! = Array [i] |, то есть, OBJ [B]-> obj [Object]-> a! = b, так депонировано
obj [b] = b; то есть obj [объект] = b; перезаписывает предыдущий OBJ [Object] = a;
В этом случае появятся все объекты, и будет сохранено только последнее значение объекта.
При рассмотрении объектов я использую следующий метод:
Кода -копия выглядит следующим образом:
for (var i = 0; i <temp.length; i ++) {
for (var j = i+1; j <temp.length; j ++) {
if (temp [i] === temp [j]) {
temp.splice (j, 1);
J--;
}
}
}
вернуть температуру;
5. Сортировка массива: сортировка метода. Если объект, который вы хотите сортировать, является объектом, вы можете написать сравнение (a, b) {if (a.age> b.age) return 1; else return -1;}, a.sort (compare).
6. Мин возвращает минимальное значение массива: return Math.min.apply (0, массив);
7. Unshift не возвращает длину массива под IE6,7.
Кода -копия выглядит следующим образом:
Если ([]. Unshift (1)! == 1) // Добавить элемент из предыдущего в пустой массив, другие браузеры вернут 1, в то время как IE6 и 7 не вернут длину массива. Выполнить оператор IF
{
var _unshift = array.prototype.unshift; // Функция угона.
Array.prototype.unshift = function () {
_unshift.apply (это, аргументы);
вернуть это.
}
}
8. Начиная с одного параметра, второй параметр IE8 по умолчанию и следующие версии составляет 0, а другие браузеры - длина массива.
Кода -копия выглядит следующим образом:
Если ([1,2,3] .splice (1) .length == 0) // IE8 и следующие версии будут равны 0, а другие версии будут равны 3, введите, если
{
var _splice = array.prototype.splice;
Array.prototype.splice = function (a) {
if (Arguments.length == 1) // Если есть только один параметр
{
вернуть _splice.call (this, a, this.length);
}еще{
вернуть _splice.apply (это, аргументы);
}
}
}
Этот метод изменит параметры массива, поэтому толкайте, POP, Shift и Unseift of Array (эти методы также изменят параметры массива) будут вызвать этот метод для его реализации.
Вот место, где нужно отметить:
Кода -копия выглядит следующим образом:
var color = new Array ('red', 'Blue', 'желтый', «черный»);
var color2 = color.splice (2,0, «коричневый», «розовый»);
блюд (цвет); // Красный, синий, коричневый, розовый, желтый, черный, на желтой опции, запустите операцию, если удалить равна 0, добавленная опция вставляется перед желтым. Помнить.
Здесь, пожалуйста, проверьте разницу между сплайсингом и срезами, возвратной стоимостью и его влиянием на исходный массив.
Выше приведено упрощенная версия содержания этого раздела. Хотя он упорядочен, ключевые точки - все. Я надеюсь, что это будет полезно для всех при чтении этого раздела.