目次
インターネットで能力テストを見たのですが、とても楽しかったので、質問に答えてみました、はは
質問を見てください(答えは後ろにあります)、すべての質問は関数のカプセル化です。
インターネットで能力テストを見たのですが、とても楽しかったので、質問に答えてみました、はは
質問を見てください(答えは後ろにあります)、すべての質問は関数のカプセル化です。
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);
}
}