我知道我可以在MDN上找到一系列的mutator方法,但实际上,我始终会忘记诸如push()或reverse()之类的方法是对原始数组进行了突变还是创建了一个新数组。为什么某些方法是变种人而有些方法是非变种人,是否有逻辑,所以我很容易记住?
答案 0 :(得分:3)
也许记住它们的一种有用方法是识别变异方法并将其分组;只有少量。
从数组添加/删除:
Array.prototype.fill()
-在任何地方覆盖元素Array.prototype.pop()
-从开头删除Array.prototype.push()
-添加到开头Array.prototype.shift()
-从结尾删除Array.prototype.unshift()
-添加到结尾Array.prototype.splice()
-在任何地方添加/删除重新排列数组:
Array.prototype.flat()
-展平数组Array.prototype.sort()
-使用排序功能重新排列元素Array.prototype.reverse()
-反向元素赔率:
Array.prototype.copyWithin()
-老实说,我从未使用过这种方法变异数组方法列表-
Array.prototype.copyWithin()
Array.prototype.fill()
Array.prototype.flat()
Array.prototype.pop()
Array.prototype.push()
Array.prototype.reverse()
Array.prototype.shift()
Array.prototype.sort()
Array.prototype.splice()
Array.prototype.unshift()
非可变数组方法列表-
Array.from()
-从可迭代的数组创建Array.isArray()
-检查变量是否为数组Array.of()
-创建一个数组; []
Array.prototype.concat()
-将多个数组组合成一个新的单个数组Array.prototype.entries()
-获取键/值对的迭代器Array.prototype.every()
-检查每个值是否与一个函数匹配Array.prototype.filter()
-创建与过滤条件匹配的值数组Array.prototype.find()
-使用函数查找值Array.prototype.findIndex()
-使用函数查找值的索引Array.prototype.flatMap()
-使用映射函数创建新数组Array.prototype.forEach()
-对每个值都产生副作用Array.prototype.includes()
-检查数组是否包含值Array.prototype.indexOf()
-按值查找值的索引Array.prototype.join()
-使用分隔符将值组合成字符串Array.prototype.keys()
-获取键的迭代器Array.prototype.lastIndexOf()
-从值末开始按值查找值的索引Array.prototype.map()
-使用映射函数创建新数组Array.prototype.reduce()
-折叠每个值,产生一个新值Array.prototype.reduceRight()
-从右开始折叠每个值,产生一个新值Array.prototype.slice()
-选择一个子数组Array.prototype.some()
-检查某些值是否与函数匹配Array.prototype.toLocaleString()
-数组的字符串表示形式,在值上使用toLocaleString
Array.prototype.toString()
-数组的字符串表示形式,在值上使用toString
Array.prototype.values()
-获取值的迭代器Array.prototype[@@iterator]()
-获取默认迭代器答案 1 :(得分:0)
本质上,任何导致索引移位,减小或增长或以其他方式更改列表原始定义的方法都必须是可变的。助记符可能是要考虑您是想要数组中的内容还是想要对数组做某事? Shift和pop可以说是令人困惑的,因为它们实际上没有等效的不变的便捷方法,例如“ top”或“ last”。