Home > Web Front-end > H5 Tutorial > body text

What are the differences between JavaScript's methods for arrays?

php中世界最好的语言
Release: 2017-11-18 17:39:42
Original
1961 people have browsed it

In JavaScript, there are many methods for adding, removing, and replacing array elements. Many methods can achieve the same function, but they are very different. Today we will compare them. In JavaScript What is the secret of the array method?

JavaScript provides a variety of methods for adding, removing, and replacing array elements, but some will affect the original array; some will not, and they will create a new array.

Note: Distinguish the difference between the following two methods:

array.splice() affects the original array

array.slice() does not affect the original array


I. New addition: affecting the original array

Using array.push() and array.ushift() to add new elements will affect the original array.

let mutatingAdd = ['a', 'b', 'c', 'd', 'e'];
mutatingAdd.push('f'); // ['a', 'b', 'c', 'd', 'e', 'f']
mutatingAdd.unshift('z'); // ['z', 'b', 'c', 'd', 'e' 'f']
Copy after login

II. New addition: does not affect the original array

There are two ways to add elements that will not affect the original array. The first is array.concat().

const arr1 = ['a', 'b', 'c', 'd', 'e'];
const arr2 = arr1.concat('f'); // ['a', 'b', 'c', 'd', 'e', 'f']  (注:原文有误,我做了修改 “.” ---> “,”)
console.log(arr1); // ['a', 'b', 'c', 'd', 'e']
Copy after login

The second method is to use JavaScript's spread operator. The spread operator is three dots (...)

const arr1 = ['a', 'b', 'c', 'd', 'e'];
const arr2 = [...arr1, 'f']; // ['a', 'b', 'c', 'd', 'e', 'f']  
const arr3 = ['z', ...arr1]; // ['z', 'a', 'b', 'c', 'd', 'e']
Copy after login

The spread operator will copy the original array, starting from the original array. All elements are taken out of the array and stored in the new environment.


III. Removal: Affects the original array

When array.pop() and array.shift() are used to remove array elements, the original array will be affected. array.

let mutatingRemove = ['a', 'b', 'c', 'd', 'e'];  
mutatingRemove.pop(); // ['a', 'b', 'c', 'd']  
mutatingRemove.shift(); // ['b', 'c', 'd']
Copy after login

array.pop() and array.shift() return the removed element, you can get the removed element through a variable.

let mutatingRemove = ['a', 'b', 'c', 'd', 'e'];
const returnedValue1 = mutatingRemove.pop();  
console.log(mutatingRemove); // ['a', 'b', 'c', 'd']  
console.log(returnedValue1); // 'e'
const returnedValue2 = mutatingRemove.shift();  
console.log(mutatingRemove); // ['b', 'c', 'd']  
console.log(returnedValue2); // 'a'
Copy after login

array.splice() can also delete elements of an array.

let mutatingRemove = ['a', 'b', 'c', 'd', 'e'];  
mutatingRemove.splice(0, 2); // ['c', 'd', 'e']
Copy after login

Like array.pop() and array.shift(), array.splice() also returns the removed elements.

let mutatingRemove = ['a', 'b', 'c', 'd', 'e'];  
let returnedItems = mutatingRemove.splice(0, 2);  
console.log(mutatingRemove); // ['c', 'd', 'e']  
console.log(returnedItems) // ['a', 'b']
Copy after login

IV. Removal: Does not affect the original array

JavaScript 的 array.filter() 方法基于原数组创建一个新数组,新数组仅包含匹配特定条件的元素。
const arr1 = ['a', 'b', 'c', 'd', 'e'];
const arr2 = arr1.filter(a => a !== 'e'); // ['a', 'b', 'c', 'd'](注:原文有误,我做了修改)  
// 或者
const arr2 = arr1.filter(a => {  
  return a !== 'e';
}); // ['a', 'b', 'c', 'd'](注:原文有误,我做了修改)
Copy after login

The condition of the above code is "not equal to 'e'", so the new array (arr2) does not contain 'e'.

The uniqueness of the arrow function:

Single-line arrow function, the 'return' keyword comes by default and does not need to be written manually.

However, multi-line arrow functions need to return a value explicitly.

Another way that does not affect the original array is array.slice() (not to be confused with array.splice()).

const arr1 = ['a', 'b', 'c', 'd', 'e'];  
const arr2 = arr1.slice(1, 5) // ['b', 'c', 'd', 'e']  
const arr3 = arr1.slice(2) // ['c', 'd', 'e']
Copy after login

V. Replacement: affecting the original array

If you know which element to replace, you can use array.splice().

let mutatingReplace = ['a', 'b', 'c', 'd', 'e'];  
mutatingReplace.splice(2, 1, 30); // ['a', 'b', 30, 'd', 'e']  
// 或者
mutatingReplace.splice(2, 1, 30, 31); // ['a', 'b', 30, 31, 'd', 'e']
Copy after login

VI. Replacement: Does not affect the original array

You can use array.map() to create a new array, and you can check each element and replace them according to specific conditions.

const arr1 = ['a', 'b', 'c', 'd', 'e']  
const arr2 = arr1.map(item => {  
  if(item === 'c') {
    item = 'CAT';
  }
  return item;
}); // ['a', 'b', 'CAT', 'd', 'e']
Copy after login

Use array.map() to convert data

array.map() is a powerful method that can be used to convert data without polluting the original data source.

const origArr = ['a', 'b', 'c', 'd', 'e'];  
const transformedArr = origArr.map(n => n + 'Hi!'); // ['aHi!', 'bHi!', 'cHi!', 'dHi!', 'eHi!']  
console.log(origArr); // ['a', 'b', 'c', 'd', 'e']; // 原数组毫发无损
Copy after login

There are so many method comparisons about arrays. I hope it can help everyone understand and use arrays in JS.


Related reading:

About JS array Array method summary

js array deduplication method Summary

Parsing the parameter passing method of angularjs array

The above is the detailed content of What are the differences between JavaScript's methods for arrays?. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!