[英]Nested loops : last loop always returns the last array object
我正在嘗試使用3個數組進行循環。 一切正常,直到最后一個循環。
最后一個循環始終返回最后一個數組對象。
我嘗試添加一些中斷,將循環移到同一級別,並進行其他許多操作。 但是我從來沒有成功...
這是我的代碼
features = [
'poll',
'form'
];
actions = [
'create',
'activate',
'duplicate'
];
queries = [
'createQuery',
'activateQuery',
'duplicateQuery'
];
function getFeatureAction(feature) {
for (f = 0; f < features.length; f++) {
feature = features[f];
queries = [
'createQuery',
'activateQuery',
'duplicateQuery'
];
for (a = 0; a < actions.length; a++) {
action = actions[a]
featureAction = feature + '_' + action
for (q = 0; q < queries.length; q++) {
query = queries[q]
}
console.log(featureAction, query)
}
}
}
getFeatureAction();
我的例外結果:
poll_create createQuery
poll_activate activateQuery
poll_duplicate duplicateQuery
form_create createQuery
form_activate activateQuery
form_duplicate duplicateQuery
因此,我認為這里的普遍想法是,您需要登錄到循環內部,這樣您才能看到循環的每次迭代,而不是僅僅看到循環結束后打印的最后結果,因為您不在循環中。 您可以通過多種方法來做到這一點,但是要盡可能地接近您的版本。
features = [
'poll',
'form'
];
actions = [
'create',
'activate',
'duplicate'
];
queries = [
'createQuery',
'activateQuery',
'duplicateQuery'
];
function getFeatureAction(feature) {
for (let f = 0; f < features.length; f++) {
feature = features[f];
for(let a = 0; a < actions.length; a++) {
query = queries[a]
action = actions[a]
featureAction = feature + '_' + action
console.log(featureAction, query)
}
}
}
getFeatureAction();
請注意,我只做了兩個for
循環,因為這些數組的長度是相同的,但是如果這些數組的長度不總是相同,那么您也應該循環最后一個數組
這里:
for (q = 0; q < queries.length; q++) {
query = queries[q]
}
console.log(featureAction, query)
“遍歷整個查詢數組,完成后,打印出最后一個”。 將console.log
放入循環中。
您要在循環結束后記錄該值,因此很明顯,您總是會得到最后一個值。 從循環內部記錄它。 您也可以用更簡潔的方式編寫代碼,如下所示:
const features = [ 'poll', 'form' ]; const actions = [ 'create', 'activate', 'duplicate' ]; const queries = [ 'createQuery', 'activateQuery', 'duplicateQuery' ]; function getFeatureAction() { for (feature of features) { for (action of actions) { let featureAction = feature + '_' + action for (query of queries) { console.log(featureAction, query); // <-- Log INSIDE the loop, not after } } } } getFeatureAction();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.