数组和对象的循环,数组去重,筛选,排序

indexOf()找到下标
splice()删除指定下标元素,返回删除的值,原数组会改.
slice ()返回新的数组,不会修改原来数组的值
shift()删除数组中的第一个
pop()删除数组中最后一个
delete arr[1(下标)] 除掉数组中的元素后,会把该下标出的值置为undefined,数组的长度不会变

1\forEach

数组循环,不能用break中断,也不能用return返回到外层.可以用try catch抛出异常,new error()

2\for-in

可以遍历普通对象,遍历的顺序可能不是按照实际顺序,得到字符串类型的健名.

var wq ={a:'1',b:'2'}
for (var it in wq){
	console.log(it)  //a,b
	console.log(wq[it])   //1,2
}

3\for of

不可以遍历对象,但是可以遍历对象数组. ps:还可以遍历字符串.

如何让对象可以被for of 遍历,当然是给它添加遍历器,代码如下:

Object.prototype[Symbol.iterator] = function() {
    let _this = this
    let index = 0
    let length = Object.keys(_this).length
    return {
        next:() => {
            let value = _this[index]
            let done = (index >= length)
            index++
            return {value,done}
        }
    }
}

遍历字符串:

var a ='我是谁'
for(var item of a){
console.log(item)//我,是,谁
}

es6新增

3\Object.entries(obj)

通俗点就是 Object.entries() 可以把一个对象的键值以数组的形式遍历出来

const obj = { foo: 'bar', baz: 'abc' }; 
console.log(Object.entries(obj));  // [['foo', 'bar'], ['baz', 'abc']]

数组,把数据变对象

const arr = [1, 2, 3]; 
console.log(Object.entries(arr));  // [['0', 1], ['1', '2'], ['2', '3']]

4\Object.keys(obj)

得到健名

5\Object.values(obj)

得到健值

6/filter 筛选

7/every和some

console.log( arr.some( function( item, index, array ){ 
    console.log( 'item=' + item + ',index='+index+',array='+array ); 
    return item > 3; 
})); 

console.log( arr.every( function( item, index, array ){ 
    console.log( 'item=' + item + ',index='+index+',array='+array ); 
    return item > 3; 
}));

some:一真即真
every:一假即假:
some一直在找符合条件的值,一旦找到,则不会继续迭代下去。
every从迭代开始,一旦有一个不符合条件,则不会继续迭代下去。

8/set 和 Array.form

set:(直接用不行,要把它放入一个数组中,返回的才是数组,或者配合array.form使用.)

let arr = [4, 1, 3, 3, 2, '2'];
let uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [4, 1, 3, 2, "2"]

Array.form可以遍历.

console.log(Array.from('foo'));
// expected output: Array ["f", "o", "o"]

console.log(Array.from([1, 2, 3], x => x + x));
// expected output: Array [2, 4, 6]

Array.form可以去重.

// new Set 是实现数组去重,
// Array.from()把去重之后转换成数组
let arr2 = Array.from(new Set(arr));

9/sort() 排序

var a =[1,2,3]
a.sort()
是根据字母排序,a,b,c ;
1.不加回调函数则只能排下标10以内的数组
2.加了回调函数返回的是正数形参 a,b则调换位置 为负数则不调换位置(升序 a-b,降序b-a)

let array = _array.sort((a,b)=>{
        return b-a   //降序
      })

3.加了回调函数返回的是1或者正整数,数组所有元素的位置将倒转,类似于Array.prototype.reverse()方法(reverse()方法不会返回一个新数组,只是更改原数组元素的位置)

array = array.sort(function(value1, value2){
    return value1 < value2 ? -1 : 1; //返回值为0,则不变
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值