1. function test (){
  2. arguments.push(9)
  3. }
  4. test() //报错,应为 arguments 没有继承Array.prototype,没有push方法
  5. //他不是数组
  6. 实际上是对象模拟的数组,有数组的显示方式

对象模拟数组的方式:
增加length 和 splice 属性

image.png

把类数组转成数组

  1. function () {
  2. var arr = Array.prototype.slice.call(arguments)
  3. }

素组按照元素的字节数排序
查询字节数
charCodeAt(i) > 255 是中文 去

重数组

利用obj 的唯一key值,hasOwnProperty,可以解决!0这样尴尬的判断

  1. Array.prototype.unite = function () {
  2. let arr = []
  3. let obj = {}
  4. // this.forEach(item => {
  5. // if (!arr.includes(item)) {
  6. // arr.push(item)
  7. // }
  8. // })
  9. for (let i = 0; i < this.length; i++) {
  10. if (!obj[this[i]]) {
  11. obj[this[i]] = 'value'
  12. arr.push(this[i])
  13. }
  14. }
  15. return arr
  16. }