Удалить список из списка списков - PullRequest
0 голосов
/ 03 июля 2018

У меня есть список списков, подобных следующему:

myList = [
["ooooh", "that"],
["dog ", "of"],
["mine", "word...."]
]

Теперь я хочу удалить элемент списка: ["ooooh", "that"]

Предполагая, что я знаю, что элемент 0 равен "ooooh", а элемент 1 равен "that", но Я не знаю положение элемента в списке включения , может ли это быть достигнуто без зацикливания?

Общие ответы от моего исследования, похоже, гласят: "удалить myList ['1']" или знать номер элемента в массиве - в моем случае для удаления требуется элемент 0 и 1.

В псевдокоде я хотел бы:

myList.destroy(["ooooh", "that"])

Как этого достичь?

Ответы [ 7 ]

0 голосов
/ 03 июля 2018

Я опоздал на вечеринку, но вот мой вклад:


let myList = [
  ["ooooh", "that"],
  ["dog ", "of"],
  ["mine", "word...."]
];

Array.prototype.destroy = function(array) {
  this.forEach((el, i) => {
    if (JSON.stringify(el) === JSON.stringify(array)) {
      this.splice(i, 1);
    }
  });
}

console.log(myList);

myList.destroy(["ooooh", "that"]);

console.log(myList);
0 голосов
/ 03 июля 2018

Вы можете использовать фильтр и все вместе, чтобы сделать его гибким.

const myList = [
  ["ooooh", "that"],
  ["dog ", "of"],
  ["mine", "word...."]
];

const toDelete = ["ooooh", "that"];

const res = myList.filter(e => ! toDelete.every(x => e.includes(x)));
console.log(res);
0 голосов
/ 03 июля 2018

Ну, есть несколько способов сделать это, как указано в других ответах, но я думаю, что самый простой способ - это использовать фильтр. Как это ::

myList = [
    ["ooooh", "that"],
    ["dog ", "of"],
    ["mine", "word"]
];
    
myList = myList.filter((element)=>
    //filter condition 
    (!
       ((element[0] == 'ooooh') && (element[1] == 'that'))
    )
);

console.log(myList)
0 голосов
/ 03 июля 2018

Вы можете использовать splice, чтобы удалить элемент из списка.

myList.splice(
   myList.findIndex( item => 
     item[0] == "ooooh" && item[1] == "that"
   ), 
1);

Надеюсь, это поможет:>

myList = [
["ooooh", "that"],
["dog ", "of"],
["mine", "word...."]];

myList.splice(myList.findIndex(item => item[0] == "ooooh" && item[1] == "that"), 1);

console.log(myList)
0 голосов
/ 03 июля 2018

Вы можете использовать функцию filter , сравнивая массивы как строки

myList = [
  ["ooooh", "that"],
  ["dog ", "of"],
  ["mine", "word...."]
];

let findMe = ["ooooh", "that"]

myList = myList.filter((curr) => curr.join() !== findMe.join())

console.log(myList)
0 голосов
/ 03 июля 2018

Просто отфильтруйте массив

var myList = [
["ooooh", "that"],
["dog ", "of"],
["mine", "word...."]
]

deleteFromList = (val, list) => list.filter(a=>JSON.stringify(a)!=JSON.stringify(val))

console.log(
  deleteFromList(["ooooh", "that"], myList)
)

/* Same as */

myList = myList.filter(a=>JSON.stringify(a)!=JSON.stringify(["ooooh", "that"]))

console.log(myList)
0 голосов
/ 03 июля 2018

Вы также можете использовать pop для удаления элемента из вашего массива.
Вот документация .

myArray = [
["ooooh", "that"],
["dog ", "of"],
["mine", "word..."]
]

console.log("Original Array:");
console.log(myArray);

/**
 * Removes one array from an array of arrays 
 *
 * @param  {String} myArray       - The original array of arrays
 * @param  {String} arrayToRemove - The array that will be removed from myArray
 */
function destroy(myArray, arrayToRemove) {
        arrayIndexToBeRemoved = myArray.findIndex(item => item[0] == arrayToRemove[0] && item[1] == arrayToRemove[1]);
        if (arrayIndexToBeRemoved != -1){
            removedArray = myArray.pop(arrayIndexToBeRemoved);
            console.log("Removed: " + removedArray);
        } else {
            console.log("Couldn't find: " + arrayToRemove + " in: " + myArray);
        }
}

destroy(myArray, ["mine", "word..."]);

console.log("Final Array:");
console.log(myArray);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...