Как вставить новый объект между двумя соседними?
Здравствуйте!
Имеется объект следующей структуры: var Obj = { { "table":"orderBook", "data":[ {"symbol":"XBT","id":17999992000,"side":"Sell","size":100,"price":80}, {"symbol":"XBT","id":17999993000,"side":"Sell","size":20,"price":70}, {"symbol":"XBT","id":17999994000,"side":"Sell","size":10,"price":60}, {"symbol":"XBT","id":17999995000,"side":"Buy","size":10,"price":50}, {"symbol":"XBT","id":17999996000,"side":"Buy","size":20,"price":40}, {"symbol":"XBT","id":17999997000,"side":"Buy","size":100,"price":30} ] } Как добавить новый элемент data id которого будет скажем 17999995500 между элементами с id 17999994000 и 17999995000? И как удалить элемент data c заданным значением id? Заранее спасибо за помощь! |
zheka79,
const Obj = { "table":"orderBook", "data":[ {"symbol":"XBT","id":17999992000,"side":"Sell","size":100,"price":80}, {"symbol":"XBT","id":17999993000,"side":"Sell","size":20,"price":70}, {"symbol":"XBT","id":17999994000,"side":"Sell","size":10,"price":60}, {"symbol":"XBT","id":17999995000,"side":"Buy","size":10,"price":50}, {"symbol":"XBT","id":17999996000,"side":"Buy","size":20,"price":40}, {"symbol":"XBT","id":17999997000,"side":"Buy","size":100,"price":30} ] } let idx = 17999996000; const findIndexObj = idx => Obj.data.findIndex(({id}) => id === idx); const changeData = (idx, deleteCount = 1, elem) => elem ? Obj.data.splice(i,deleteCount, ...elem) : Obj.data.splice(i,deleteCount) let i = findIndexObj(idx) changeData(i) console.table(Obj.data); idx = 17999994000; i = findIndexObj(idx) + 1; let a = {id : 17999995500}, b = {id : 17999995501}, c = {id : 17999995502} changeData(i,0, [a, b, c]) console.table(Obj.data); |
Цитата:
|
Совершенно верно. Опечатался. Нужен именно отсортированный по id порядок. Но сортировать не надо. Интересует именно вставка и удаление.
|
Тогда вставляйте после чего сортируйте в любое время:
Obj.data.push({"symbol":"XBT","id":17999995500,"side":"Buy","size":50,"price":90}); //это добавить новый объект в массив Obj.data.sort((a, b)=> a.id - b.id); //а это отсортировать его объекты по ключу id |
Спасибо за ответы
|
А как удалить объект с определенным id?
|
Цитата:
строка 14 удаление обьекта с id = 17999996000 строка 22 добавление трёх обьектов после обьекта с dx = 17999994000; |
У вас массив объектов, а в нем удалить элемент сократив массив, это выполнить функцию splice (почитать, это не так сложно для понимания), в которую нужно передать индекс элемента, в котором и находится объект с указанным ID, и количество удаляемых элементов, то есть для удаления одного 1.
var del = 17999994000, //id удялемого i = Obj.data.findIndex(({id}) => id == del); //индекс удаляемого объекта в массиве Obj.data.splice(i, 1); //удаление |
Парни, реально помогаете. Спасибо!
А как перебрать data и получить значения id, price, size? Пробовал for (var key in Obj.data) { console.log(key); } не прокатывает. На php таких проблем нет. |
Часовой пояс GMT +3, время: 08:13. |