Я возвращаю данные в свою таблицу DataTables, но не могу просмотреть следующий массив:
["BREAKFAST (Vegetables)", "LUNCH-DINNER (Vegetables)"]
Я попробовал приведенный ниже код, но он просто печатает первый элемент
{data: null,
render: function(data, type, row, meta) {
var categoriesNamesList = '';
//loop through all the row details to build output string
for (var item in row.categories_names) {
var r = row.categories_names[item];
//Check if r is NULL or Empty then skip
if (r){
categoriesNamesList = '<ul><li>'+ r + '</li></ul>';
}
}
return categoriesNamesList;
}
}
@RobinZigmond да, это была проблема! Мне не хватало массива конкатенации. Мой новый код — categoriesNamesList = categoriesNamesList + '<ul><li>'+ r + '</li></ul>';, и теперь он печатает все записи. Миллион спасибо дружище!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Переместите размещение возврата внутрь цикла. Основываясь на коде, который у вас есть, я могу поспорить, что вы получаете только последний элемент.
render: function(data, type, row, meta) {
var categoriesNamesList = '';
//loop through all the row details to build output string
for (var item in row.categories_names) {
var r = row.categories_names[item];
//Check if r is NULL or Empty then skip
if (r){
categoriesNamesList = '<ul><li>'+ r + '</li></ul>';
return categoriesNamesList;
}
}
}
На самом деле вы можете использовать .map(...) в массиве (при условии row.categories_names) следующим образом:
render: function(data, type, row, meta) {
return row.categories_names.map(function(item) {
return '<ul><li>'+item+'</li></ul>';
});
}
Это может быть проще. Дайте мне знать, если это работает.
categoriesNamesList = '<ul><li>'+ r + '</li></ul>';- это перезаписывает переменную каждый раз. Вы хотите объединить строки с помощью+=?