Как перебрать этот своего рода массив javascript?

Я возвращаю данные в свою таблицу 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;

    }
}
categoriesNamesList = '<ul><li>'+ r + '</li></ul>'; - это перезаписывает переменную каждый раз. Вы хотите объединить строки с помощью +=?
Robin Zigmond 02.04.2019 16:50

@RobinZigmond да, это была проблема! Мне не хватало массива конкатенации. Мой новый код — categoriesNamesList = categoriesNamesList + '<ul><li>'+ r + '</li></ul>';, и теперь он печатает все записи. Миллион спасибо дружище!

Iftikhar uddin 02.04.2019 16:53
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
63
2

Ответы 2

Переместите размещение возврата внутрь цикла. Основываясь на коде, который у вас есть, я могу поспорить, что вы получаете только последний элемент.

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>';
    });
}

Это может быть проще. Дайте мне знать, если это работает.

Другие вопросы по теме