配列またはオブジェクトを最初の引数として受け入れるiterateThroughElements
関数があります。 2番目の引数としてオプションの関数があります。関数内の関数パラメータの受け渡し
ユーザーが関数の2番目のパラメータを渡さなかった場合、要素をすべて繰り返し、すべての要素をコンソールログに記録します。
ユーザーが関数を渡すと、関数が実行する関数が正確に実行されます。
は、ここに私のコードです:
function filterArgReturnEvenElements(el) {
return (typeof el === 'number') && !(el % 2);
}
function returnKeyWithArrayValue(arg, key){
return arg[key] instanceof Array;
}
function iterateThroughElements(arg, myFunc){
// if arg is an Array
if (arg instanceof Array) {
// if function exist then call specific function or callback
if(myFunc && typeof(myFunc) == "function"){
return arg.filter(myFunc);
// else if function doesnt exist, iterate through array and console.log all the items
}else{
arg.forEach(item => console.log(item));
}
}
// if arg is an Object
else if(arg instanceof Object) {
// if function exist then call specific function or callback
if(myFunc&& typeof(myFunc) == "function"){
return Object.keys(arg).filter(key => myFunc(arg, key));
// else if function doesnt exist, iterate through object and console.log all the items
}else{
for(key in arg){
if(arg.hasOwnProperty(key)){
console.log(key + " : " + arg[key]);
}
}
}
}
let arr = [1, 2, 3, 4, 5, 7];
let obj = {
firstname: 'mik',
lastname: 'lasner',
age: 21,
favorite: ['hiking', 'surfing', 'beach']
};
let output = iterateThroughElements(arr, filterArgReturnEvenElements);
console.log(output);
let output2 = iterateThroughElements(obj, returnKeyWithArrayValue);
console.log(output2);
let output3 = iterateThroughElements(arr);
console.log(output);
let output4 = iterateThroughElements(obj);
console.log(output2);
あなたが偶数あるアレイ上のアイテムを返しますfilterArgReturnEvenElements
機能の上に見ることができるように。
returnKeyWithArrayValue
関数は、配列値を持つオブジェクトのキーを返しますが、
現在、私のコードは機能しません。どこが間違っていたと思いますか?助けてください!
これはもっと便利ですか?
「今のところ私のコードは機能しません」 - これは、説明がなくても無駄な文です。 *具体的に*動作しないのは何ですか?希望する結果と得られた結果を記入してください。私が見る唯一のエラーは 'let output4 = ...; console.log(output2) '(つまり、あなたは実際には' output4'を表示しません。これはとにかく 'undefined'です)。 – Amadan
あなたの4つの出力のどちらが間違っていますか?期待される成果とは何ですか? –