বিরতির সাথে কার্যকরী সংস্করণ হ্রাস করুন 'রূপান্তর' হিসাবে প্রয়োগ করা যেতে পারে, প্রাক্তন। আন্ডারস্কোর এ।
এটি বন্ধ করার জন্য আমি একটি কনফিগার পতাকা দিয়ে এটি বাস্তবায়নের চেষ্টা করেছি যাতে বাস্তবায়ন হ্রাস করার ফলে আপনি বর্তমানে যে ডেটা কাঠামোটি ব্যবহার করছেন তা পরিবর্তন করতে হবে না।
const transform = (arr, reduce, init, config = {}) => {
const result = arr.reduce((acc, item, i, arr) => {
if (acc.found) return acc
acc.value = reduce(config, acc.value, item, i, arr)
if (config.stop) {
acc.found = true
}
return acc
}, { value: init, found: false })
return result.value
}
module.exports = transform
ব্যবহার 1, সহজ
const a = [0, 1, 1, 3, 1]
console.log(transform(a, (config, acc, v) => {
if (v === 3) { config.stop = true }
if (v === 1) return ++acc
return acc
}, 0))
ব্যবহার 2, অভ্যন্তরীণ ভেরিয়েবল হিসাবে কনফিগার ব্যবহার করুন
const pixes = Array(size).fill(0)
const pixProcessed = pixes.map((_, pixId) => {
return transform(pics, (config, _, pic) => {
if (pic[pixId] !== '2') config.stop = true
return pic[pixId]
}, '0')
})
ব্যবহার 3, বাহ্যিক ভেরিয়েবল হিসাবে ক্যাপচার কনফিগারেশন
const thrusts2 = permute([9, 8, 7, 6, 5]).map(signals => {
const datas = new Array(5).fill(_data())
const ps = new Array(5).fill(0)
let thrust = 0, config
do {
config = {}
thrust = transform(signals, (_config, acc, signal, i) => {
const res = intcode(
datas[i], signal,
{ once: true, i: ps[i], prev: acc }
)
if (res) {
[ps[i], acc] = res
} else {
_config.stop = true
}
return acc
}, thrust, config)
} while (!config.stop)
return thrust
}, 0)
current
উপরের কোডে কী আছে ? এগুলি কীভাবে একই জিনিস করতে পারে তা আমি দেখতে পাচ্ছি না। কোন ক্ষেত্রে সেখানে পদ্ধতি গোড়ার দিকে মত বিরতি হয়some
,every
,find