JS数组练习 数组基本知识 实例

改变原数组(7个)

1、push(),在数组后面添加元素

JS数组练习
数组基本知识
实例

2、pop(),剪切数组的最后元素

不需要传入参数,传入也没用

JS数组练习
数组基本知识
实例

3、shift( ),减去前面的元素

JS数组练习
数组基本知识
实例

4、unshift( ),在前面添加元素

JS数组练习
数组基本知识
实例

5、splice(),截取数组元素

JS数组练习
数组基本知识
实例

6、reverse(),反转

JS数组练习
数组基本知识
实例

7、sort(),升序排序,按ASCII码来排列的

从小到大排序后的数组 = 数组.sort(function(a,b){

            return a-b;

});

JS数组练习
数组基本知识
实例

  • 无参:按照数组元素的首字符对应的Unicode编码值,从小到大排列数组元素。

  • 带参:必须为函数(回调函数:callback)。这个回调函数中带有两个参数,代表数组中的前后元素。

    • 如果返回值(a-b)为负数,a排b前面。

    • 如果返回值(a-b)等于0,不动。

    • 如果返回值(a-b)为正数,a排b后面。

上面的这个带参的排序,其实是调用了底层的冒泡排序,小的排前面,大的排后面。

PS:sort方法的功能非常强大,能对数字和字母进行排列。

升序

JS数组练习
数组基本知识
实例

降序

JS数组练习
数组基本知识
实例

排对象也是可以的,按字节排序。

不改变原数组(5个)

1、concat(),拼接数组

JS数组练习
数组基本知识
实例

2、join(),连接数组内部元素,必须加字符串,虽然直接加数字也可以

JS数组练习
数组基本知识
实例

3、split(), 把一个字符串分割成字符串数组

JS数组练习
数组基本知识
实例

JS数组练习
数组基本知识
实例

4、toString(),数组元素

JS数组练习
数组基本知识
实例

5、slice(),截取数据

不传入参数就是整体截取,1个参数就是从该处开始截取到尾部

实例

查找数组中的指定元素,并返回索引值

<script>
    var arr = [1,2,3,6,8];
    function indexOf(arr,item) {
        if (Array.prototype.indexOf){ //这里是考虑其兼容性问题,如果没有该方法原型的话就采取循环去自己处理
            return arr.indexOf(item);
        }else{
            for (var i = 0; i < arr.length; i++){
                if (arr[i] === item){
                    return i;
                }
            }
        }
    }
    indexOf(arr,3);
</script>

数组求和

<script>
    var arr = [1,2,3,6,8];
    function sum(arr) {
            var n = 0;
            for (var i = 0; i < arr.length; i++){
                n += arr[i];
            }
            return n;
    }
    console.log(sum(arr)); //20
</script>

移除指定元素

<script>
    // 移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组
    var arr = [1,2,3,6,8];
    function remove(arr,item) {
        var n = 0;
        var arr1 = [];
        for (var i = 0; i < arr.length; i++){
            if (arr[i]!= item){
                arr1.push(arr[i]);
            }
        }
        return arr1;
    }
    console.log(remove(arr,3)); //

    //移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回
    var arr = [1,2,3,6,8];
    function remove(arr,item) {
        for (var i = 0; i < arr.length; i++){
            if (arr[i] === item){
                arr.splice(i,1);
                i--;
            }
        }
        return arr;
    }
    console.log(remove(arr,3)); //

</script>

添加和删除元素

<script>
    //在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组
    var arr = [1,2,3,6,8];
    function append(arr,item) {
        var arr1 = arr.slice(0);
        arr1.push(item);
        return arr1;
    }
    console.log(append(arr,3)); //

    //删除数组 arr 最后一个元素。不要直接修改数组 arr,结果返回新的数组
    var arr = [1,2,3,6,8];
    function del(arr) {
        var arr1 = arr.slice(0);
        arr1.pop();
        return arr1;
    }
    console.log(del(arr)); //

    //在数组 arr 开头添加元素 item。不要直接修改数组 arr,结果返回新的数组
        var arr = [1,2,3,6,8];
        function append(arr,item) {
            var arr1 = arr.slice(0);
            arr1.unshift(item);
            return arr1;
        }
        console.log(append(arr,3)); //

    //删除数组 arr 第一个元素。不要直接修改数组 arr,结果返回新的数组
        var arr = [1,2,3,6,8];
        function del(arr) {
            var arr1 = arr.slice(0);
            arr1.shift();
            return arr1;
        }
        console.log(del(arr)); //

    //合并数组 arr1 和数组 arr2。不要直接修改数组 arr,结果返回新的数组
    var arr1 = [1, 2, 3, 4];
    var arr2 = ['a', 'b', 'c', 1];
    function concat( ) {
        var arr = arr1.concat(arr2);
        return arr;
    }
    console.log(concat(arr1,arr2));

    //在数组 arr 的 index 处添加元素 item。不要直接修改数组 arr,结果返回新的数组
    var arr = [1, 2, 3, 4];
    function insert(arr, item, index) {
            var arr1 = arr.slice(0);
            arr1.splice(index,0,item);
            return arr1;
    }
    console.log(insert(arr,5,2));  // 1,2,5,3,4


</script>

数组或字符串去重

<script>
//第一种
    var str = "abcdedddffhssjssjssksk";
    var arr = str.split("");
//    var arr = ['ss','ss','aa','aa','b','f'];
    Array.prototype.unique = function () {
        var temp = {};
        var arr = [];
        var len = this.length;
        for (var i = 0; i < len; i++) {
            if (!temp[this[i]]) {
                temp[this[i]] = 'a';//如果里面没有这个属性名的话,就添加进去
                arr.push(this[i]);
            }
        }
        return arr.join('');
    }

//第二种
//        问题:编写一个方法去掉一个数组中的重复元素。
//        分析:创建一个新数组,循环遍历,只要新数组中有老数组的值,就不用再添加了。
        var arr = [1,2,3,4,5,2,3,4];
        console.log(arr);
        var aaa = fn(arr);
        console.log(aaa);
        //思路:创建一个新数组,循环遍历,只要新数组中有老数组的值,就不用再添加了。
        function fn(array){
            var newArr = [];
            for(var i=0;i<array.length;i++){
                //开闭原则
                var bool = true;
                //每次都要判断新数组中是否有旧数组中的值。
                for(var j=0;j<newArr.length;j++){
                    if(array[i] === newArr[j]){
                        bool = false;
                    }
                }
                if(bool){
                    newArr[newArr.length] = array[i];
                }
            }
            return newArr;
        }
 
//第三种
function duplicates(arr) {
     var a = [],b = [];
     //遍历arr,如果以arr中元素为下标的的b元素已存在,则该b元素加1,否则设置为1
     for(var i = 0; i < arr.length; i++){
         if(!b[arr[i]]){
             b[arr[i]] = 1;
             continue;
         }
         b[arr[i]]++;
     }
     //遍历b数组,将其中元素值大于1的元素下标存入a数组中
     for(var i = 0; i < b.length; i++){
         if(b[i] > 1){
             a.push(i);
         }
     }
     return a;
}
    </script>