Завершение запутанного метода JS

внешний интерфейс JavaScript модульный тест

Строковые методы JS, такие как substr, substring, методы массива, такие как slice, splice и т. д., имеют похожие имена, но их использование немного отличается, поэтому разработчики никогда не могут вспомнить их использование в процессе разработки и должны проверять информацию. Теперь, чтобы организовать это, я надеюсь, что это поможет вам вспомнить.

Строковый объект

slice

stringObject.slice(start, end)

var a = 'Hello world!';
var b = a.slice(2);
var c = a.slice(-4, -2);
// a: 'Hello world!'
// b: 'llo world!'
// c: 'rl',参数可为负

substr

stringObject.substr(start, length)

var a = 'Hello world!';
var b = a.substr(0, 4);
var c = a.substr(-5, 2);
// a: 'Hello world!'
// b: 'Hell'
// c: 'or',参数可为负

substring

stringObject.substring(start, stop)

var a = 'Hello world!';
var b = a.substring(0, 4);
var c = a.substring(3, 2);
var d = a.substring(0, -1);
// a: 'Hello world!'
// b: 'Hell'
// c: 'l',start比stop小,交换这两个参数
// d: '',参数为负,返回空字符串

Slice, substr и substring — все это методы обрезки строк, между которыми есть небольшие различия, и их можно гибко использовать в соответствии с различными сценариями использования. Все три метода генерируют новую строку, а не изменяют исходную строку.

Объект массива

concat

arrayObject.concat(arrayX, arrayX, ......, arrayX)

Параметрами могут быть конкретные значения, объекты массива или любое их количество. Возвращает копию объединенного массива без изменения существующего массива.

var a = [1, 2, 3];
var b = a.concat(4, 5);
var c = a.concat([4, 5]);
// a: [1, 2, 3]
// b: [1, 2, 3, 4, 5]
// c: [1, 2, 3, 4, 5]

pop

arrayObject.pop()

Удаляет последний элемент arrayObject, уменьшает длину массива на 1 и возвращает значение удаленного элемента. Если массив уже пуст, pop() не изменяет массив и возвращает неопределенное значение. Этот метод изменяет исходный массив.

var a = [1, 2, 3];
var b = a.pop();
// a: [1, 2],修改了原数组
// b: 3,返回删除元素的值

push

arrayObject.push(newelement1,newelement2,....,newelementX)

Порядок параметров добавляется в конец объекта массива, и объект массива изменяется напрямую.

var a = [1, 2, 3];
var b = a.push(4, 5);
// a: [1, 2, 3, 4, 5],修改了原数组
// b: 5,返回修改后的数组的长度

shift

arrayObject.shift()

Удаляет из него первый элемент массива и возвращает значение первого элемента. Если массив пуст, метод shift() ничего не сделает и вернет неопределенное значение. Этот метод изменяет исходный массив. Аналог поп-метода.

var a = [1, 2, 3];
var b = a.shift();
// a: [2, 3],修改了原数组
// b: 1,返回删除元素的值

unshift

arrayObject.unshift(newelement1, newelement2, ...., newelementX)

Добавляет один или несколько элементов в начало массива и возвращает новую длину. Первым аргументом метода будет новый элемент 0 массива, если есть второй аргумент, это будет новый элемент 1 и так далее.

var a = [1, 2, 3];
var b = a.unshift(4, 5);
// a: [ 4, 5, 1, 2, 3 ],修改了原数组
// b: 5,返回修改后的数组的长度

slice

arrayObject.slice(start, end)

Возвращает новый массив, содержащий элементы в arrayObject от начала до конца (исключая этот элемент). Этот метод не изменяет исходный массив.

var a = [1, 2, 3, 4, 5];
var b = a.slice(2);
// a: [1, 2, 3, 4, 5],不修改原数组
// b: [3, 4, 5],返回新数组

var c = [1, 2, 3, 4, 5];
var d = c.slice(2, -1);
// c: [1, 2, 3, 4, 5],不修改原数组
// d: [3, 4],返回新数组

splice

arrayObject.splice(index, howmany, item1, ....., itemX)

Удаляет ноль или более элементов, начиная с индекса, и заменяет эти удаленные элементы одним или несколькими значениями, объявленными в списке аргументов. Если элемент был удален из arrayObject, возвращается массив, содержащий удаленный элемент.

var a = [1, 2, 3, 4, 5];
var b = a.splice(1, 1);
// a: [1, 3, 4, 5],修改了原数组
// b: [2],返回新数组

var c = [1, 2, 3, 4, 5];
var d = c.splice(-1, 1);
// c: [1, 2, 3, 4],修改了原数组
// d: [5],返回新数组

var e = [1, 2, 3, 4, 5];
var f = e.splice(1, 1, 6, 7);
// e: [ 1, 6, 7, 3, 4, 5 ],修改了原数组
// f: [2],返回新数组

var g = [1, 2, 3, 4, 5];
var h = g.splice(1, 0, 8);
// g: [ 1, 8, 2, 3, 4, 5 ],修改了原数组
// h: [],没有删除值,返回空数组

sort

arrayObject.sort(sortBy)

Без аргументов элементы в массиве сортируются в алфавитном порядке. Когда параметр является функцией сравнения, если необходимо поменять местами значения prev и next, возвращается значение больше 0.

var a = [1, 10, 8, 6, 9];
var b = a.sort(function (prev, next) {
  return prev - next;
});
// a: [1, 6, 8, 9, 10],修改了原数组
// b: [1, 6, 8, 9, 10],返回修改后的数组

reverse

arrayObject.reverse()

Используется для изменения порядка элементов в массиве. изменит исходный массив.

var a = [1, 2, 3];
var b = a.reverse();
// a: [3, 2, 1],修改了原数组
// b: [3, 2, 1],返回修改后的数组

map

arrayObject.map(function(currentValue, index, arrayObject) {})

Обработать каждый элемент массива, возвращая новый массив.

var a = [1, 2, 3];
var b = a.map((curVal) => curVal * 2);
// a: [1, 2, 3],不修改原数组
// b: [2, 4, 6],返回新数组

forEach

arrayObject.forEach(function(currentValue, index, arrayObject) {})

Предоставленная функция выполняется один раз для каждого элемента массива. Вообще говоря, исходный массив не изменяется, но исходный массив также может быть изменен с помощью функции обработки. Метод гибкий и аналогичныйfor...of.

var a = [1, 2, 3];
var sum = 0;
var b = a.forEach((curVal) => sum += curVal);
// a: [1, 2, 3],不修改原数组
// b: undefined,forEach不返回值
// sum: 6

find

arrayObject.find(function(currentValue, index, arrayObject) {})

Возвращает первый элемент массива, удовлетворяющий условию проверки (возвращает true). Возвращает undefined, если такого элемента не существует. findIndex аналогичен, за исключением того, что он возвращает индекс первого элемента, удовлетворяющего условию проверки.

var a = [1, 2, 3];
var b = a.find((curVal) => curVal === 1);
var c = a.find((curVal) => curVal === 4);
// a: [1, 2, 3],不修改原数组
// b: 1
// c: undefined

filter

arrayObject.filter(function(currentValue, index, arrayObject) {})

Возвращает массив всех элементов массива, удовлетворяющих условию проверки (возвращает true). Возвращает [], если такого элемента не существует.

var a = [1, 2, 3];
var b = a.filter((curVal) => curVal > 1);
var c = a.filter((curVal) => curVal > 3);
// a: [1, 2, 3],不修改原数组
// b: [2, 3]
// c: []

reduce

arrayObject.filter(function(previousValue, currentValue, currentIndex, arrayObject) {}, initialValue)

Получает функцию как аккумулятор, где каждое значение в массиве (слева направо) сводится к одному значению в конце.

Если параметр initialValue отсутствует, reduce начинает выполнение функции обратного вызова с индекса 1, пропуская первый индекс. Если есть параметр initialValue, reduce выполнит обратный вызов из индекса 0. Если массив пуст и параметр initialValue отсутствует, будет выброшено исключение TypeError. Если в массиве есть только один элемент и нет InitialValue initialValue, или есть InitialValue, но массив пуст, уникальное значение возвращается напрямую, без вызова функции обратного вызова.

var a = [1, 2, 3];
var b = a.reduce((prevResult, curItem) => prevResult + curItem);
// a: [1, 2, 3],不修改原数组
// b: 6

За исключением семи методов Array pop, push, shift, unshift, splice, sort и reverse, которые изменяют исходный массив, другие методы не изменяют исходный массив.