簡體   English   中英

嵌套循環:last循環始終返回最后一個數組對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM