Как я могу сохранить данные в переменную только один раз?

#jquery #loops #variables #datatables

#jquery #циклы #переменные #таблицы данных

Вопрос:

 'createdCell':  function (cell, cellData, rowData, rowIndex, colIndex) {
   if(Array.isArray(cellData)){
       console.log(colIndex);
       var myfirstArray = colIndex;
   }
}
  

Мой вывод console.log (colIndex):

 3 
4
  

Что я хочу сделать, это сохранить первое значение (в данном случае 3 в переменную myfirstArray . Есть ли способ остановить скрипт для сохранения других данных в переменную после сохранения первого? Потому что прямо сейчас myfirstArray установлено значение 3 , но после этого оно перезаписывается 4 ?

Комментарии:

1. Предположительно createdCell функция вызывается несколько раз. Таким образом, если вы хотите иметь дело с одним или несколькими значениями, предоставленными ее аргументам, вам нужно будет сделать это в рамках этой функции.

2. @RoryMcCrossan Может быть, есть способ проверить, была ли функция вызвана в первый раз?

3. Есть, но myfirstArray переменная находится только в области действия этой функции, поэтому вопрос становится спорным — если только вы не сделаете переменную глобальной, но это не очень хорошая практика, и ее следует избегать.

4. @RoryMcCrossan Ну, я понимаю. Но факт в том, что у меня есть определенное количество ячеек. это исправление. и наименьшее число данных ячейки, которое определяется как массив, всегда 3 . Не имеет значения, сколько раз вызывается функция. Это всегда 3

5. Это означает, что в каждой функции мне нужно установить моей переменной myfirstArray значение 3 . Вы понимаете, что я имею в виду? Возможно, сбивает с толку

Ответ №1:

 // Both variables sohuld be global
let functionAlreadyVisited = false;
let myfirstArray;
// ...

'createdCell':  function (cell, cellData, rowData, rowIndex, colIndex) {
   if(!functionAlreadyVisited amp;amp; Array.isArray(cellData)){
       functionAlreadyVisited = true;
       console.log(colIndex);
       myfirstArray = colIndex;
   }

   if(Array.isArray(cellData)){
       $(cell).attr('data-original-title', 'This is my first Array:'  myfirstArray);
   }

   return myfirstArray;
}
  

Комментарии:

1. К сожалению, это не работает. В каждой функции мне нужно иметь доступ к myfirstArray =3

2. @marila Тогда не могли бы вы более четко объяснить, что вы хотите сделать, и показать, как вы вызываете createdCell ? Вы можете обновить свой вопрос.

3. Да, фактически это почти то, что мне нужно. Представьте, что функция запущена, и myfirstArray имеет значение 3, затем функция запускается снова, но мне нужно получить доступ к «3». Возможно ли тогда присвоить myfirstArray значение «global» или вернуть его, чтобы я мог получить к нему доступ при следующем запуске функции?

4. Спасибо! Я проверил ваш код. Я забыл вам сказать, что в последней строке внутри функции у меня есть этот код: $(cell).attr('data-original-title', 'this is my first Array:' myfirstArray);

5. Но если я использую это сейчас, то я получаю сообщение об ошибке: unreachable code after return statement