JavaScript Proficiency Test 01(Easy Level)、何点獲得できますか?私たちの目的はインタビュアーを粉砕することです!

目次

インターネットで能力テストを見たのですが、とても楽しかったので、質問に答えてみました、はは

質問を見てください(答えは後ろにあります)、すべての質問は関数のカプセル化です。

回答リファレンス


インターネットで能力テストを見たのですが、とても楽しかったので、質問に答えてみました、はは

質問を見てください(答えは後ろにあります)、すべての質問は関数のカプセル化です。

1.関数indexOf(arr、item)をカプセル化し、指定された配列arr内の要素アイテムの位置を見つけ、存在しない場合は-1を返します。

例:arr [1,3,5,7,9]アイテム7は3を返します

2.関数sum(arr)をカプセル化して、特定の配列arr内のすべての要素の合計を計算します。 

例:[1,3,5]は9を返します

3.関数remove(arr、item)をカプセル化して、配列arr内のitemに等しい要素を削除します。元の配列は変更されず、新しい配列が返されます。

たとえば、arr:[1,3,5,7] item:5は次を返します:[1,3,7](これは新しい配列です)

4.関数removeWithoutCopy(arr、item)をカプセル化し、配列arrのitemに等しい要素を削除し、元の配列を操作して、この配列を返します。

たとえば、arr:[1,3,5,7] item:5は次を返します:[1,3,7](これは元の配列です)

5.関数prepend(arr、item)をカプセル化し、配列arrの先頭に要素itemを追加すると、元の配列は変更されず、新しい配列が返されます。

たとえば、arr:[1,3,5,7] item:9は次を返します:[9,1,3,5,7] 

6.関数count(arr、item)をカプセル化して、値が配列arrのitemと等しい要素の出現回数をカウントします。

たとえば、arr:[1,3,5,7,5,8,5] item:5 return:3

7.関数duplicates(arr)をカプセル化して、配列arr内の繰り返される要素を見つけます。

たとえば、[1、3、3、5、3、1、5、3、7、7]は[1,3,57]を返します。

8.タイマー機能を実現するために、関数count(start、end)をカプセル化します。

(1)開始から終了まで(開始と終了を含む)、console.logは100ミリ秒ごとに数値を記録し、その数値は毎回1ずつ増加します。

(2)最初の数字はすぐに出力する必要があります

(3)返されたオブジェクトには、タイミング操作を停止するためのcancelメソッドが含まれている必要があり
ます。9。関数closures(arr、fn)、closureをカプセル化します。

(1)arrと同じ長さの関数配列結果を返します

(2)resultのi番目の関数であるresult [i]()を実行すると、結果はfn(arr [i])と同じになります。

10.関数secondary(fn)、secondaryencapsulationをカプセル化します

(1)この関数は結果関数を返します。結果関数を呼び出した後、返される結果は関数fnを呼び出した結果と一致します。

(2)fnの呼び出しパラメーターは、secondaryの最初のパラメーターとresultの呼び出しパラメーターの後のすべてのパラメーターです。

 

回答リファレンス(標準的な回答ではなく、自分で行う)

回答1

function indexOf(arr, item) {
    for(var i=0;i<arr.length;i++){
        if(arr[i]==item){
            console.log(i)
            return i;
        }
        
    }
    return -1;
}

回答2

function sum(arr) {
    var sum=0;
    arr.forEach(function(item){
        sum+=item;
    })
    return sum
}

回答3

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

回答4

function removeWithoutCopy(arr, item) {
   for(let i=0;i<arr.length;i++){
        if(arr[i]==item){
            arr.splice(i,1);
            i--;
        }
    }
    return arr;
}

回答5

function prepend(arr, item) {
    var newArr=[item];
    newArr = newArr.concat.apply(newArr,arr)
    return newArr;
}

回答6

function count(arr, item) {
    let n=0
    arr.forEach((a)=>{
        if(a===item){
            n++;
        }
    })
    return n;
}

回答7

function duplicates(arr) {
    var newArr=[],tempArr=[];
    arr.forEach((a)=>{
        if(tempArr.indexOf(a)!=-1){
        	if(newArr.indexOf(a)==-1){
        		newArr.push(a);
        	}
        }else{
            tempArr.push(a);
        }
    })
    return newArr;
}

回答8

function count(start, end) {
        console.log(start);
        var timter = setInterval(function(){
             console.log(++start);
            if(start>=end){
                clearInterval(timter);
            }
        },100)
    return {
        'cancel':function(){
            clearInterval(timter);
        }
    } 
}

回答9

function closures(arr, fn) {
    var result=[]
    arr.forEach((a)=>{
       result.push(fn.bind(a,a))
    })
    
    return result;
}

回答10

function secondary(fn) {
     var args = Array.prototype.slice.call(arguments,1);
     return function(){
         var args2=Array.prototype.slice.call(arguments,0);
         args = args.concat(args2);
        return  fn.apply(null,args);
     }
}

 

おすすめ

転載: blog.csdn.net/dkm123456/article/details/111562771