美文网首页
类数组和去重

类数组和去重

作者: 浮巷旧人 | 来源:发表于2018-08-01 21:58 被阅读0次

类数组

1.可以利用属性名模拟数组的特性
2.可以动态的增长length属性
3.如果强行让类数组调用push方法,则会根据length属性值的位置进行属性的扩充

function test  ()  {
   console.log(arguments);
   arguments.push(7);
}
test(1,2,3,4,5,6);
return  [1,2,3,4,5,6]
但是push(7)就会报错 像这种类似数组,但还不
完全具备数组的属性  就是类数组
var obj = {
   '0'  :  'a',
   '1'  :  'b',
   '2'  :  'c',
   'length' :  3,
   'push'  :  Array.prototype.push,
   'splice'  :   Array.prototype.splice,保证了和数组
一样的形式,但obj还是对象
}
/属性要为索引(数字)属性,必须有length属性,
最好加上push
/     Array.prototype.push  =  function(target)  {
          this.[this.length]  =  target;
          this.length  ++;
}
var  obj  =  {
    '2'  :  'a',
    '3'  :  'b',
    'length'  :  2,
    'push'  :  Array.prototype.push
}
obj.push('c');套用上面的公式
obj.push('d');关键的点在于length  前面的就会被覆盖
  
obj  return  {2:‘c’,  3 :  'd',  length:  4}
function  type(target)  {
    var ret  =  typeof(target);
    var   template  =  {
      '[object   Array]'  :  "array",
      '[object  Object]'  :  'object',
      '[object  Number]'  :  'number - object ',
      '[object   Boolean]'  : 'boolean - object ',
      '[object   String]'  :  'string - object ',
    }
if(target  ===  null){
      return  null;
}else  if(ret  ==  'object'){
  var  str  =  Object.prototype.toString.call(target);
  return  template[str];
}else {
      return  ret;
}
}
数组去重代码
var arr  =  {1,1,1,1,1,1,2,2,2,2,2,2,2,1,1,1,1};
/var obj  =  {
/    1: "abc",
 /   2:"abc",
/}
/obj[1]  ->  undefined;
/obj[1]  ->"abc"
/obj[2]  ->  undefined;
/obj[2]  ->"abc"
Array.prototype.unique  =  function(){
 var temp  =  {},
      arr  =  [],
      len  =  this.length;
for(var i  =  0;  i  <  len;  i++  ){
      if( ! temp[this[ i ] ] ){
            temp[this[ i ] ]  =  "abc";
            arr.push(this[ i ]);
      }
}
  return  arr;
}
arr.unique()   

如果原数组里面有零, temp[this[ i ] ] = this[i];是不行的 不会去重, temp[this[ i ] ] = "abc";就可以了 。

function  test ()  {
    console.log(this);
}
// test();    ==  test.call();
 test.call({name  :  'deng'});
//test ()
/test()  -> AO{
/argumens  :  {},类数组
/this:{window},
这里call把this改了

相关文章

  • 类数组和去重

    类数组 1.可以利用属性名模拟数组的特性2.可以动态的增长length属性3.如果强行让类数组调用push方法,则...

  • 2018-06-13(数组 去重,class类名兼容)

    数组 去重 (使用josn的特点来实现数组的去重) class 类名 的 兼容 function $(){ ...

  • 数组去重4种方法

    怎么把类数组转换为数组? 数组去重4几种方法:

  • Array集结号

    实现数组去重的几种方法 数组去重一 数组去重二 利用数组indexof+push实现数组去重 数组去重三 利用对象...

  • 数组和算法-数组去重

    数组去重 之前一段时间一直在准备面试, 因而博客太久没更新; 现在基本知识点都复习完毕, 接下来就分享下 面试的一...

  • 数组和对象数组去重

    对象数组去重: 因为map key唯一,所以你想要根据哪个属性去重,res.has(a)和set(a, 1) 里a...

  • js基础加强

    定义类1 调用 定义类2 this指向修改 剩余参数 伪数组转真数组 数组相关 模板字符串定义 set集合去重 O...

  • 实现数组去重有哪些方式

    简单的数组去重 数组对象去重

  • 数组和对象方法&数组去重

    列举一下JavaScript数组和对象有哪些原生方法? 数组: arr.concat(arr1, arr2, ar...

  • 数组去重的四种方法

    利用双for循环去重 利用对象数组去重 利用对象数组去重并且记录重复次数 通过创建一个新数组进行数组去重

网友评论

      本文标题:类数组和去重

      本文链接:https://www.haomeiwen.com/subject/eeldvftx.html