const todoItems = [1, 2, 3, 4, 5] const itemsIncremented = [] for (let i = 0; i < items.length; i++) { itemsIncremented.push(items[i] + 1) } console.log(itemsIncremented) // [2, 3, 4, 5, 6] const todos = ['Write an article', 'Proofreading'] todos.push('Publish the article') console.log(todos) // ['Write an article', 'Proofreading', 'Publish the article']
如果你需要像 itemsIncremented 一样构建一个数组,很多方法都是机会,像我们的朋友 map,filter或者reduce。事实上我们可以使用 map 同样做到:
const itemsIncremented = todoItems.map(x => x + 1)
并且如果你需要使用 push,当你要添加新元素的时候,展开操作符为你撑腰。
const todos = ['Write an article', 'Proofreading'] console.log([...todos, 'Publish the article']) // ['Write an article', 'Proofreading', 'Publish the article']
splice
splice 常常用于作为移除某个索引元素的方法。你可以同样使用 filter 做到。
const months = ['January', 'February', 'March', 'April', ' May'] // With splice months.splice(2, 1) // remove one element at index 2 console.log(months) // ['January', 'February', 'April', 'May'] // Without splice const monthsFiltered = months.filter((month, i) => i !== 3) console.log(monthsFiltered) // ['January', 'February', 'April', 'May']
你可能会想,如果我需要移除多个元素呢?额,使用 slice:
const months = ['January', 'February', 'March', 'April', ' May'] // With splice months.splice(1, 3) // remove thirds element starting at index 1 console.log(months) // ['January', 'May'] // Without splice const monthsFiltered = [...months.slice(0, 1), ...months.slice(4)] console.log(monthsFiltered) // ['January', 'May']
shift
shift 移除数组的第一个元素然后返回它。从功能上来说,你可以使用 spread/rest 实现。
const numbers = [1, 2, 3, 4, 5] // With shift const firstNumber = numbers.shift() console.log(firstNumber) // 1 console.log(numbers) // [2, 3, 4, 5] // Without shift const [firstNumber, ...numbersWithoutOne] = numbers console.log(firstNumber) // 1 console.log(numbersWithoutOne) // [2, 3, 4, 5]
unshift
Unshift 允许你在数组开始添加一个或者多个元素。像是 shift, 你可以使用展开操作符做同样的事:
const numbers = [3, 4, 5] // With unshift numbers.unshift(1, 2) console.log(numbers) // [1, 2, 3, 4, 5] // Without unshift const newNumbers = [1, 2, ...numbers] console.log(newNumbers) // [1, 2, 3, 4, 5]
太长不看版:
无论何时你在数组上操作时,不要使用 for-loop 也不要重复造轮子,你想做的可能已经有一个方法在那里。
大多数情况,你应该使用 map,filter,reduce和展开操作符。它们对开发者来说是最基础的工具。
有许多方法需要了解像 slice,some,flatMap等等。记住它们并且在合适的时候使用它们。
副作用导致不想要的改变。要清楚哪些方法会改变你的原始数组。
slice 和展开操作符是浅拷贝。因此,对象和子数组将会共享同一个引用,小心使用它们。
“旧”的改变数组的方法可以被新的替换。取决于你想做什么。
以上所述是小编给大家介绍的JavaScript 数组详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
您可能感兴趣的文章: