2013-11-12 4 views
0

Я пытаюсь удалить определенные элементы из массива с JSудалить из массива массивов

Вот мой массив

[ 
    { 
     "Pizza": "Margarita", 
     "Size": "Twelve Inch Stuffed Crust", 
     "Base": "Deep Base", 
     "Price": "6.50" 
    }, 
    { 
     "Pizza": "Hot Vegetarian", 
     "Size": "Twelve Inch", 
     "Base": "Deep Base", 
     "Price": "6.00" 
    }, 
    { 
     "Pizza": "Vegetarian", 
     "Size": "Ten Inch Stuffed Crust", 
     "Base": "Deep Base", 
     "Pricelabel": "Price", 
     "Price": "6.50" 
    }, 
    { 
     "Pizza": "Hot Vegetarian", 
     "Size": "Fourteen Inch Stuffed Crust", 
     "Base": "Deep Base", 
     "Pricelabel": "Price", 
     "Price": "10.50" 
    } 
] 

на моем экране у меня есть 4 удалять кнопки, называемые «deletebutton_0, deletebutton_1, deletebutton_2 , deletebutton_4

так, например, если я нажимаю deletebutton_0 в JS будут удалены все детали первого элемента из массива,

{"Pizza":"Margarita","Size":"Twelve Inch Stuffed Crust","Base":"Deep Base","Price":"6.50"} 

Я благородный человек, все еще учась.

+2

Look up splice() - http://www.w3schools.com/jsref/jsref_splice.asp –

+1

Находит свой индекс и вызов сплайсинга. Связано: http://stackoverflow.com/questions/369602/delete-an-element-from-an-array?rq=1 – megawac

+5

Это массив _objects_, btw ... – canon

ответ

1

Вы хотите использовать splice, как это:

array.splice(index, 1); 

Набор index основанный на кнопке щелкнул.

2

Попробуйте

array.splice(index,1) где array ваш массив и index является индекс объекта, который нужно удалить

2

Ну, есть несколько вариантов для удаления элементов из массива ...

Если ваш товар первый вещь вы можете использовать Array.prototype. shift().

myArray.shift(); // removes and returns the first item 

Если это элемент последний вы могли бы использовать Array.prototype. pop().

myArray.pop(); // removes and returns the last item 

Вы можете использовать delete myArray[0]; просто удалить 0 свойство, но это не будет повторно индексировать массив.

Как правило, вы будете использовать Array.prototype. splice() для удаления/элементы вставки из/в массив из/в определенном месте, а именно:

myArray.splice(0, 1); // removes 1 item starting at index 0 

Вот пример использования splice:

var data = [{ 
 
    "Pizza": "Margarita", 
 
    "Size": "Twelve Inch Stuffed Crust", 
 
    "Base": "Deep Base", 
 
    "Price": "6.50" 
 
}, { 
 
    "Pizza": "Hot Vegetarian", 
 
    "Size": "Twelve Inch", 
 
    "Base": "Deep Base", 
 
    "Price": "6.00" 
 
}, { 
 
    "Pizza": "Vegetarian", 
 
    "Size": "Ten Inch Stuffed Crust", 
 
    "Base": "Deep Base", 
 
    "Pricelabel": "Price", 
 
    "Price": "6.50" 
 
}, { 
 
    "Pizza": "Hot Vegetarian", 
 
    "Size": "Fourteen Inch Stuffed Crust", 
 
    "Base": "Deep Base", 
 
    "Pricelabel": "Price", 
 
    "Price": "10.50" 
 
}]; 
 

 
// create a click handler for your delete buttons 
 
function handler(e) { 
 
    // get array index 
 
    var index = parseInt(this.id.split("_")[1], 10); 
 
    // get the next sibling for reindexing 
 
    var sibling = this.nextElementSibling; 
 
    // remove the button from the DOM 
 
    this.parentNode.removeChild(this); 
 
    // remove item from Array 
 
    var removedItems = data.splice(index, 1); 
 
    // reindex remaining buttons 
 
    do { 
 
    sibling.textContent = sibling.id = "deletebutton_" + index; 
 
    } while (index++, sibling = sibling.nextElementSibling); 
 
    // log info 
 
    console.log("remaining items: %o, removed: %o", data.length, removedItems[0]); 
 
} 
 

 
// get a reference to your buttons 
 
var buttons = document.querySelectorAll("button"); 
 

 
// Add the event handler to your buttons 
 
Array.prototype.forEach.call(buttons, b => b.addEventListener("click", handler));
<button type="button" id="deletebutton_0">deletebutton_0</button> 
 
<button type="button" id="deletebutton_1">deletebutton_1</button> 
 
<button type="button" id="deletebutton_2">deletebutton_2</button> 
 
<button type="button" id="deletebutton_3">deletebutton_3</button>

+0

Thx для ответа, моя проблема в том, что при добавлении события click у меня есть только 1 кнопка удаления, когда вызывается служба, она создает список для всех элементов в массиве и deletebuttons _0, _1, _2 по мере необходимости, поэтому для использования Метод splice() Мне нужен какой-то код для определения того, какая кнопка удаления была скопирована, и удалить соответственно. Извините, если я не был чист. – user2912247

Смежные вопросы