普通数组,Set,Map与entries()方法的关系

 1.Set():

      (1)Set只存储value值,没有key,{value:value}

  (2)Set 对象允许你存储任何类型的唯一值,利用set存储唯一值的特点,我们可以进行去重

                      

 将Set对象转换为数组

                    

                   

 

一.共同点:

1.都有entries()方法(给数组增加索引)

(1)-普通数组:

        使用entries()要配合for循环才能拿到里面的索引和对应的值

var arr = [1,2,3];
console.log(arr.entries()) //Array Iterator {}

for(let n of arr.entries()){
 console.log(n) 
//(2) [0, 1]
  (2) [1, 2]
  (2) [2, 3]
}

(2)-set()

var set = new Set();
set.add(5);
set.add(1);
set.add(7);
console.log(set) //Set(3) {5, 1, 7}
var a = set.entries();
console.log(a) //SetIterator {5 => 5, 1 => 1, 7 => 7}

(3)-map()

  使用entries()要配合next().value使用,执行一遍就显示一个,在执行一遍就显示下一个

var map = new Map();
map.set(3,'a');
map.set(5,'b');
map.set(1,'c');
console.log(map) //Map(3) {3 => 'a', 5 => 'b', 1 => 'c'}
console.log(map.entries().next().value) //[3, 'a']

(4)对象

*entries自己的用途:​​​​​​二维数组按行排序

function sortArr(arr) {
    var goNext = true;
    var entries = arr.entries();
    while (goNext) {
        var result = entries.next();
        if (result.done !== true) {
            result.value[1].sort((a, b) => a - b);
            goNext = true;
        } else {
            goNext = false;
        }
    }
    return arr;
}

var arr = [[1,34],[456,2,3,44,234],[4567,1,4,5,6],[34,78,23,1]];
sortArr(arr);

/*(4) [Array(2), Array(5), Array(5), Array(4)]
    0:(2) [1, 34]
    1:(5) [2, 3, 44, 234, 456]
    2:(5) [1, 4, 5, 6, 4567]
    3:(4) [1, 23, 34, 78]
    length:4
    __proto__:Array(0)
*/

二.set和map的区别

set是一种关联式容器,其特性如下:

  • set以RBTree作为底层容器
  • 所得元素的只有key没有value,value就是key
  • 不允许出现键值重复
  • 所有的元素都会被自动排序
  • 不能通过迭代器来改变set的值,因为set的值就是键 

map和set一样是关联式容器,它们的底层容器都是红黑树,区别就在于map的值不作为键,键和值是分开的。它的特性如下:

  • map以RBTree作为底层容器
  • 所有元素都是键+值存在
  • 不允许键重复
  • 所有元素是通过键进行自动排序的
  • map的键是不能修改的,但是其键对应的值是可以修改的
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值