7週目に挑戦を振り返る
11044 ワード
1.要求
7週目のタスクは関数の完了です
2.改善すべき点
1) Javascript
1️⃣ for ... in文は、コンストラクション関数のプロトタイプにリストされる可能性のあるすべての属性をリストするため、防御コードが必要です. _.each = function (collection, iterator) {
if (Array.isArray(collection)) {
for (let i = 0; i < collection.length; i++) {
iterator(collection[i], i, collection);
}
return;
}
for (let key in collection) {
iterator(collection[key], key, collection);
}
以下を参照してください.
hasOwnProperty
for...in hasOwnProperty
2πフィルタを使っても解けますので、チャレンジしてみましょう! _.reject = function (collection, test) {
const answer = [];
_.each(collection, function (item) {
if (!test(item)) answer.push(item);
});
return answer;
};
➡️ return _.filter(collection, function (item) {
return !test(item);
});
3𗞚reduceはよく再利用されています.
ただし、reduceを使用するとすべての配列を巡回する必要はありませんので、falseyvalueが真ん中にある場合は、すぐにfalseで車に戻る方法で作成します.
すべての配列は不要な回転を行う必要がないので、時間の複雑さを少し改善することができます. _.every = function (collection, iterator) {
// TIP: Try re-using reduce() here.
if (iterator === undefined) iterator = _.identity;
return _.reduce(
collection,
function (memo, item) {
if (memo) {
return memo = iterator(item) ? true : false;
}
return false;
},
true
);
➡️ if (iterator === undefined) iterator = _.identity;
const defaultValue = true;
for (let i = 0; i < collection.length; i++) {
if (!iterator(collection[i])) return false;
}
return defaultValue;
4則は実パラメトリックでアクセスできますが、拡張演算子を使うと矢印関数でも実パラメトリックにアクセスできるので、高速演算子をよく使います. _.extend = function (obj) {
➡️ _.extend = function (...args) {
3.メンターの評価
こんにちはJin権!
あなたは本当に問題を解くのが上手で、コメントすることはありません.😅
memoize部分も週末にしっかり仕上げておけばよかった!
memorizeは1回の計算値が2回求められないことを目的とする関数である.
値がパラメータに基づいて計算された場合、関数は以前に計算された値を返し、時間複雑度を空間複雑度に置き換えます.
Closerさん、Memoというキーワードでこの問題を解決してほしいです.
一週間お疲れ様でした来週も珍権のハーモニーを楽しみにしていますがんばれ!🎉
Reference
この問題について(7週目に挑戦を振り返る), 我々は、より多くの情報をここで見つけました
https://velog.io/@effort_jk/7주차-과제-Review
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
1) Javascript
1️⃣ for ... in文は、コンストラクション関数のプロトタイプにリストされる可能性のあるすべての属性をリストするため、防御コードが必要です.
_.each = function (collection, iterator) {
if (Array.isArray(collection)) {
for (let i = 0; i < collection.length; i++) {
iterator(collection[i], i, collection);
}
return;
}
for (let key in collection) {
iterator(collection[key], key, collection);
}
以下を参照してください.hasOwnProperty
for...in hasOwnProperty
2πフィルタを使っても解けますので、チャレンジしてみましょう!
_.reject = function (collection, test) {
const answer = [];
_.each(collection, function (item) {
if (!test(item)) answer.push(item);
});
return answer;
};
➡️ return _.filter(collection, function (item) {
return !test(item);
});
3𗞚reduceはよく再利用されています.ただし、reduceを使用するとすべての配列を巡回する必要はありませんので、falseyvalueが真ん中にある場合は、すぐにfalseで車に戻る方法で作成します.
すべての配列は不要な回転を行う必要がないので、時間の複雑さを少し改善することができます.
_.every = function (collection, iterator) {
// TIP: Try re-using reduce() here.
if (iterator === undefined) iterator = _.identity;
return _.reduce(
collection,
function (memo, item) {
if (memo) {
return memo = iterator(item) ? true : false;
}
return false;
},
true
);
➡️ if (iterator === undefined) iterator = _.identity;
const defaultValue = true;
for (let i = 0; i < collection.length; i++) {
if (!iterator(collection[i])) return false;
}
return defaultValue;
4則は実パラメトリックでアクセスできますが、拡張演算子を使うと矢印関数でも実パラメトリックにアクセスできるので、高速演算子をよく使います. _.extend = function (obj) {
➡️ _.extend = function (...args) {
3.メンターの評価
こんにちはJin権!
あなたは本当に問題を解くのが上手で、コメントすることはありません.😅
memoize部分も週末にしっかり仕上げておけばよかった!
memorizeは1回の計算値が2回求められないことを目的とする関数である.
値がパラメータに基づいて計算された場合、関数は以前に計算された値を返し、時間複雑度を空間複雑度に置き換えます.
Closerさん、Memoというキーワードでこの問題を解決してほしいです.
一週間お疲れ様でした来週も珍権のハーモニーを楽しみにしていますがんばれ!🎉
Reference
この問題について(7週目に挑戦を振り返る), 我々は、より多くの情報をここで見つけました
https://velog.io/@effort_jk/7주차-과제-Review
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(7週目に挑戦を振り返る), 我々は、より多くの情報をここで見つけました https://velog.io/@effort_jk/7주차-과제-Reviewテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol