Làm việc trên thử thách lập trình để triển khai lại chức năng của underscore.js trong javascript chuẩn. Cụ thể là tôi đang làm việc để triển khai hàm _.some
. (http://underscorejs.org/#some) Phần tôi đang đấu tranh là yêu cầu tôi tìm cách giải quyết nó bằng cách sử dụng _.every
nội bộ. (http://underscorejs.org/#every)Cách giải quyết _.some bằng _.every?
Tôi đã hoàn thành chức năng _.every
trước đó và hoạt động bình thường.
Đây là một cách logic những gì tôi đang muốn làm trong mã phác thảo:
_.some = function(collection, truthStatementFunction) {
return !(_every(collection, !truthStatementFunction))
}
Hoặc bằng tiếng Anh, lật tuyên bố sự thật để kiểm tra nơi điều kiện là sai ... và nếu thử nghiệm _.every
sau đó trả về true ... sau đó chúng tôi biết rằng _ một số báo cáo sự thật ban đầu là sai (do đó, lật lại sự trở lại của _.every
để nhận được khoản hoàn trả chính xác cho _some
). Tương tự, nếu _.every
trả về giá trị false thì hãy lật để có được trả lại giá trị đúng cho _.some
.
Rõ ràng vấn đề với bản phác thảo này là phần !truthStatementFunction
. Làm thế nào để tôi nhận được bên trong mà iterator để thay đổi internals của chức năng để lật nó? Dường như không thể truy cập nội bộ của chức năng ...
Tôi có đang sủa hoàn toàn cây không và có cách nào tốt hơn để giải quyết vấn đề này bằng cách sử dụng _.every
?
Bạn có ý tưởng đúng. Tuy nhiên, bạn cần phải [soạn] (https://en.wikipedia.org/wiki/Function_composition) toán tử '!' Và hàm; nó giống như 'function (x) {return! truthStatementFunction (x)}' thay vì chỉ '! truthStatementFunction'. –
Để trả lời câu hỏi của bạn ... Đó là một bài tập học tập nên điểm là học, theo cách này hay cách khác (mặc dù tôi biết tự mình giải quyết nó 100% sẽ là cách hiệu quả nhất để học, bị kẹt quá lâu và lãng phí thời gian rằng tôi có thể chi tiêu học những thứ hữu ích khác không kém cho tôi. Tôi muốn nhận được một gợi ý ở đây chứ không phải là một câu trả lời hoàn toàn, nhưng tôi đã không chắc chắn nếu điều đó sẽ chạy afoul của quy tắc dường như nghiêm ngặt tràn ngăn xếp. – jjj