Javascript для l oop внутри функции, не передающей массив - PullRequest
0 голосов
/ 21 марта 2020

EDIT - код для вычисления refill_playlist_len включен

У меня есть функция в Javascript, которая удаляет строку таблицы HTML и снова заполняет ее значениями из массивов.

В этой функции deleteRow у меня есть для l oop, который проходит по строке и присваивает части строк различным переменным и пытается вывести их sh на массивы.

Без for l oop он работает нормально (т.е. когда я просто индексирую вручную), но по какой-то причине, когда я помещаю его в a для l oop, значения не помещаются в массивы. Сами значения печатаются нормально на каждой итерации, они просто не добавляются в массив.

Refill_playlist_len - это число Django Queryset (30).


var refill_playlist_len = '{{ playlist.count }}';

var artist_Arr = [];
var track_Arr = [];
var track_id_Arr = [];
var album_Arr = [];
var artist_name;
var track_name;
var track_id;
var album_name;

for (var i = 0; i < refill_playlist_len; i++) {
      var searchStr = refill_playlist[i];
      console.log(searchStr);
      console.log(typeof searchStr);
      console.log(typeof refill_playlist);

      //grab variables
      artist_name = searchStr.match(new RegExp("artist_name:" + "(.*)" + ", album_name:"));
      console.log(artist_name[1]);
      artist_Arr.push(artist_name[1]);

      track_name = searchStr.match(new RegExp("track_name:" + "(.*)" + ", acousticness:"));
      console.log(track_name[1]);
      track_Arr.push(track_name[1]);

      track_id = searchStr.match(new RegExp("track_id:" + "(.*)" + ", track_name:"));
      console.log(track_id[1]);
      track_id_Arr.push(track_id[1]);

      album_name = searchStr.match(new RegExp("album_name:" + "(.*)" + ", track_number:"));
      console.log(album_name[1]);
      album_Arr.push(album_name[1]);
    }

Журналы консоли приведены на рисунке ниже. Вы можете увидеть часть напечатанного searchStr, а также типы данных, имя исполнителя, идентификаторы дорожек и т. Д. c, но по какой-то причине он говорит, что searchStr не определен?

Консоль

Я совершенно новичок в Javascript, поэтому я приношу свои извинения, если есть что-то базовое c Я забыл.

1 Ответ

0 голосов
/ 21 марта 2020

Несколько проблем с кодом. Пожалуйста, очистите код. Образец приведен ниже.

function find(refill_playlist) {
  const refill_playlist_len = refill_playlist.length
  let artist_Arr = []
  let track_id_Arr = []
  let track_Arr = []
  let album_Arr = []
  for (i = 0; i < refill_playlist_len; i++) {
    var searchStr = refill_playlist[i];
    if(!searchStr) continue;
    //grab variables
    artist_name = searchStr.match(/artist_name:(.*), album_name:/);
    artist_name && artist_Arr.push(artist_name[1]);

    track_name = searchStr.match(/track_name:(.*), acousticness:/);
    track_name && track_Arr.push(track_name[1]);

    track_id = searchStr.match(/track_id:(.*), track_name:/);
    track_id && track_id_Arr.push(track_id[1]);

    album_name = searchStr.match(/album_name:(.*), track_number:/);
    album_name && album_Arr.push(album_name[1]);
  }
  console.log(artist_Arr)
  console.log(track_id_Arr)
  console.log(track_Arr)
  console.log(album_Arr)
}
find(
  [
    `
    artist_name: test, album_name:
    `,
    null
  ]
)
...