首頁  >  文章  >  web前端  >  js能力測評經典題中分析陣列類型的用法_附程式碼

js能力測評經典題中分析陣列類型的用法_附程式碼

php是最好的语言
php是最好的语言原創
2018-07-26 11:39:451061瀏覽

最近在做中的js能力測評經典題,因此按照自己的能力和想法進行了總結,此篇文章主要是數組類別的總結。

1、找出元素item在給定陣列中的位置:arr.indexOf(item);

2、計算給定陣列arr中所有元素的總和:arr .forEach(function(e){sum=sum e;})


註:數組名.forEach(function(數組元素,元素索引,額外定義的數組){函數體}) / /傳回的仍是被呼叫的陣列

陣列名稱.map(function(陣列元素){函數體})  //傳回的是新數組,它不會修改呼叫的陣列;

# 3.移除數組arr中的所有製與item相等的元素,不要直接修改數組arr,結果回傳新的數組。

function remove(arr, item) {
    var newArray=[];
    arr.forEach(function(e){
        if(e!=item){
            newArray.push(e);
        }
    })
    return newArray;
}

4、移除陣列arr中的所有與item相等的元素,直接在給定的陣列上修改,並將結果傳回。

//方法一:从前往后遍历删除元素
function removeWithoutCopy(arr,item){
    for(i=0;i<arr.length;i++){
        if(item==arr[i]){
            arr.splice(i,1); //splice(定位元素索引[,删除元素个数,添加元素])
            i--;//i--的目的是因为删除了一个元素,在回到for时需要i++,会跳过一个元素
        }
    }
}

//方法二:从后往前遍历删除元素
function removeWithoutCopy(arr,item){
    for(i=arr.length-1;i>=0;i--){
        if(item==arr[i]){
            arr.splice(i,1); //删除时无需进行位移
        }
    }
}

註:陣列名.splice(索引[,個數,新增元素]),splice意味著直接在原有陣列上進行修改,傳回值為刪除元素所組成的陣列。例:var  a=[1,2,3,4,5];a.splice(3,1)//返回[4],a為[1,2,3,5]

5 、在陣列arr末尾加入元素item,不要直接在arr上修改,傳回新的陣列。

//方法一:直接使用数组的concat追加新的item,并返回新的数组
function append(arr, item) {
    return arr.concat(item);
}

//方法二:利用slice对原数组进行切分,产生新的数组,在对新数组进行push即可
function append(arr, item) {
    var newArray=arr.slice(0);
    newArray.push(item);
    return newArray;
}
//方法三:利用数组的map创建新的数组,最后对新数组push(item)即可
function append(arr, item) {
    var newArray=arr.map(function(e){
        return e;
    })
    newArray.push(item);
    return newArray;
}
//方法四:定义一个空数组,利用for/forEach进行赋值,再对新数组push(item)即可
function append(arr, item) {
    var newArray=[];
    arr.forEach(function(e){
        newArray.push(e);
    })
    newArray.push(item);
    return newArray;
}

6、刪除陣列arr最後一個元素,不要直接修改陣列arr,結果回傳新的陣列:return arr.slice(0,arr.length-1);

#7、在陣列arr 開頭加入元素item。不要直接修改陣列 arr,結果傳回新的陣列:var newArray=arr.slice(0);newArray.unshift(item)

8、刪除陣列 arr 第一個元素。不要直接修改陣列 arr,結果傳回新的陣列:return arr.slice(1);

9、合併陣列 arr1 和陣列 arr2。不要直接修改陣列 arr,結果傳回新的陣列:return arr1.concat(arr2);

10、在陣列 arr 的 index 處新增元素 item。不要直接修改陣列arr,結果傳回新的陣列:var newArray = arr.slice(0); newArray.splice(index,0,item); return newArray;

11、統計陣列arr 中位數等於item 的元素出現的次數。

function count(arr, item) {
    var count=0;
    arr.forEach(function(e){
        if(e==item)
            count+=1;
    });
    return count;
}

12、找出陣列 arr 中重複出現過的元素。輸入:[1, 2, 4, 4, 3, 3, 1, 5, 3]。輸出:[1, 3, 4]。

//方法一:利用indexOf和lastIndexOf进行判断
function duplicates(arr) {
    var result=[];
    arr.forEach(function(e){
        if(arr.indexOf(e)!=arr.lastIndexOf(e) && result.indexOf(e)==-1){
            result.push(e);
        }
    });
    return result;
}

//方法二:利用双重for循环进行判断
function duplicates(arr) {
    var result=[];
    for(i=0;i<arr.length-1;i++){
        for(k=0;k<result.length;k++){
            if(arr[i]==result[k])
                break;
        }
        if(k!=result.length) continue;
        for(j=i+1;j<arr.length;j++){
            if(arr[i]==arr[j]){
                result.push(arr[i]);
                break;
            }
        }
    }
    return result;
}

13、為陣列 arr 中的每個元素求二次方。不要直接修改陣列 arr,結果傳回新的陣列。

//方法一:定义空数组,对arr进行遍历赋值
function square(arr) {
    var newArr=[];
    arr.forEach(function(e){
        newArr.push(e*e);
    });
    return newArr;
}
//方法二:直接使用map产生新的数组
function square(arr) {
    return arr.map(function(e){
        return e*e;
    })
}

14、在數組arr 中,查找值與item 相等的元素出現的所有位置

function findAllOccurrences(arr, target) {
    var newArray=[];
    arr.forEach(function(e,i){
        if(e==target) newArray.push(i);
    })
    return newArray;
}

在js經典題中,以上便是所有數組的題型,接下來便是編碼規範、函數模組。

相關推薦:

BootStrap經典案例分析

PHP字串操作經典入門

影片教學:前端JS開發27個經典實戰

#

以上是js能力測評經典題中分析陣列類型的用法_附程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn