Как отфильтровать массив массивов

1

У меня такой массив:

homeShapeShift: [
        [
            {text:"BTC", callback_data: 'btc'},
            {text:"ETH", callback_data: 'eth'},
            {text:"XRP", callback_data: 'xrp'},
            {text:"ETC", callback_data: 'etc'},
        ],
        [
            {text:"ZEC", callback_data: 'zec'},
            {text:"DASH", callback_data: 'dash'},
            {text:"LTC", callback_data: 'ltc'},
            {text:"OMG", callback_data: 'omg'},
        ],
                [
            {text:"ADA", callback_data: 'ada'},
            {text:"BTG", callback_data: 'btg'},
            {text:"TRX", callback_data: 'trx'},
            {text:"NEO", callback_data: 'neo'},
        ],
    ]

Как удалить объект с текстом Zec и получить новый массив без него? Я пробовал что-то с фильтром, но не получил хорошего результата

let fe = keyboard.homeShapeShift.filter(k => k.filter(e => e.text !== 'ZEC'));
  • 0
    Каков твой желаемый результат, точно?
  • 0
    Просто измените ваш первый filter на map и вы должны быть хороши: keyboard.homeShapeShift.map(k => k.filter(e => e.text !== 'ZEC'));
Теги:

3 ответа

0
Лучший ответ

Если вы просто хотите удалить один элемент, просто сопоставьте внутренние массивы с новыми внутренними фильтрованными массивами:

  let fe = keyboard.homeShapeShift.map(k => k.filter(e => e.text !== 'ZEC'));

Или если вы хотите удалить весь массив, используйте every чтобы получить логическое значение:

 let fe = keyboard.homeShapeShift.filter(k => k.every(e => e.text !== 'ZEC'));

что может быть тоже с обратным развитием some:

 let fe = keyboard.homeShapeShift.filter(k => !k.some(e => e.text === 'ZEC'));
0

Вы можете фильтровать внутренние массивы, сопоставляя их, а затем фильтровать внешний массив по длине внутренних массивов.

var homeShapeShift = [[{ text: "BTC", callback_data: 'btc' }, { text: "ETH", callback_data: 'eth' }, { text: "XRP", callback_data: 'xrp' }, { text: "ETC", callback_data: 'etc' }], [{ text: "ZEC", callback_data: 'zec' }, { text: "DASH", callback_data: 'dash' }, { text: "LTC", callback_data: 'ltc' }, { text: "OMG", callback_data: 'omg' }], [{ text: "ADA", callback_data: 'ada' }, { text: "BTG", callback_data: 'btg' }, { text: "TRX", callback_data: 'trx' }, { text: "NEO", callback_data: 'neo' }]],
    result = homeShapeShift
        .map(a => a.filter(({ text }) => text !== 'ZEC'))
        .filter(({ length }) => length);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
0
var  fe = [];
var obj = [];

homeShapeShift.forEach(function(element) {
    element.forEach(function(element) {
        if(element.text !== 'ZEC'){
            obj.push(element);
        }
    });
    fe.push(obj);
    obj = [];
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню