Как удалить пустые ячейки массива данных [duplicate]

Конечно, есть много таких подходов, как синхронный запрос, обещание, но из моего опыта я думаю, что вы должны использовать подход обратного вызова. Естественно, что асинхронное поведение Javascript. Итак, ваш фрагмент кода можно переписать немного иначе:

function foo() {
    var result;

    $.ajax({
        url: '...',
        success: function(response) {
            myCallback(response);
        }
    });

    return result;
}

function myCallback(response) {
    // Does something.
}
34
задан Amro 3 December 2014 в 17:00
поделиться

2 ответа

Используйте CELLFUN

%# find empty cells
emptyCells = cellfun(@isempty,a);
%# remove empty cells
a(emptyCells) = [];

Примечание: a(i)==[] не будет работать. Если вы хотите узнать, пуста ли i-я ячейка, вам нужно использовать фигурные скобки для доступа к содержимому ячейки. Кроме того, ==[] оценивает значение пустым вместо true / false, поэтому вместо этого вы должны использовать команду isempty. Короче: a(i)==[] следует переписать как isempty(a{i}).

55
ответ дан Jonas 28 August 2018 в 06:43
поделиться

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

Я нашел этот подход, который работает корректно в моем случае.

source: https://groups.google.com/forum/#!topic/comp.softsys.matlab/p3NX0fI6u90

подход:

myCellARRAY(all(cellfun(@isempty,myCellARRAY),2), : ) = [];
0
ответ дан Robert 28 August 2018 в 06:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: