数组其他问题

2021-02-26  本文已影响0人  岚平果

1. 数组里面有10万个数据,取第一个元素和第10万个元素的时间相差多少

答:数组可以直接根据索引取的对应的元素,所以不管取哪个位置的元素的时间消耗时间几乎一致,
差异可以忽略不计

2. for…in 与 for…of 的区别

1. 都可以遍历数组,for in 返回数组的下标(key);for of 返回数组的元素;
  const arr1 = ['a', 'b', 'c'];
  for (let i in arr1) {
    console.log(i)  // 0, 1, 2
  }
      
  const arr2 = ['a', 'b', 'c'];
  for (let i of arr2) {
    console.log(i) // a, b, c
  }
………………………………………………………………………………………………………………………………………………………………………………………………………………
2.  遍历对象  for in 遍历获取对象 key 值;  for of 报错;
    const json = {"a": 1, "b": 2, "c": 3};
    for (let i in json) {
      console.log(i) // a, b, c
    }
    for (let i of json) {
      console.log(i)     // 数据格式错误
    }

3. 给数组手动添加属性,   for in 循环可以遍历出 name 这个添加属性的键名
    const arr3 = ['a', 'b'];
    arr3.name = 'c';
    for (let i in arr3) {
        console.log(i) // 0, 1, name
    }

4. for in 的特点:
    a. for … in 循环返回的值都是数据结构的 键值名。
    b. 遍历对象返回的对象的key值;
    c. 遍历数组返回的数组的下标(key)。
    d. for … in 循环不仅可以遍历数字键名,还会遍历原型上的key值和手动添加的其他键;
    e. 特别情况下, for … in 循环会以任意的顺序遍历键名
    f. 总结一句: for in 循环特别适合遍历对象。

5. for of 特点:
    a. for of 循环用来获取一对键值对中的值,而 for in 获取的是 键名 
    b. 一个数据结构只要部署了 Symbol.iterator 属性, 就被视为具有 iterator 接口, 
    就可以使用 for of循环。
    例 3 这个对象,没有 Symbol.iterator这个属性,所以使用 for of会报json is not iterable
c. for of 不同与 forEach, 它可以与 break、continue 和 return 配合使用,
    也就是说 for of 循环可以随时退出循环。

6. 我也想让对象可以使用 for of 循环怎么办? 使用 Object.keys() 获取对象的 key 值集合后,
   再使用 for of
   const obj = {a: 'x', b: 'y'};
   for (let i of Object.keys(obj)) {
      console.log(i)   // a, b
    }
上一篇 下一篇

猜你喜欢

热点阅读