Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.11.2019, 22:45
Новичок на форуме
Отправить личное сообщение для zheka79 Посмотреть профиль Найти все сообщения от zheka79
 
Регистрация: 09.11.2019
Сообщений: 6

Как вставить новый объект между двумя соседними?
Здравствуйте!
Имеется объект следующей структуры:
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?

Заранее спасибо за помощь!
Ответить с цитированием
  #2 (permalink)  
Старый 09.11.2019, 23:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

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);
Ответить с цитированием
  #3 (permalink)  
Старый 09.11.2019, 23:57
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от zheka79
между элементами с id 17999994000 и 17999995000
Может быть между 17999995000 и 17999996000? Для чего это, чтобы отсортированный по id порядок?
Ответить с цитированием
  #4 (permalink)  
Старый 10.11.2019, 00:14
Новичок на форуме
Отправить личное сообщение для zheka79 Посмотреть профиль Найти все сообщения от zheka79
 
Регистрация: 09.11.2019
Сообщений: 6

Совершенно верно. Опечатался. Нужен именно отсортированный по id порядок. Но сортировать не надо. Интересует именно вставка и удаление.
Ответить с цитированием
  #5 (permalink)  
Старый 10.11.2019, 00:14
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Тогда вставляйте после чего сортируйте в любое время:

Obj.data.push({"symbol":"XBT","id":17999995500,"side":"Buy","size":50,"price":90}); //это добавить новый объект в массив
Obj.data.sort((a, b)=> a.id - b.id); //а это отсортировать его объекты по ключу id
Ответить с цитированием
  #6 (permalink)  
Старый 10.11.2019, 00:34
Новичок на форуме
Отправить личное сообщение для zheka79 Посмотреть профиль Найти все сообщения от zheka79
 
Регистрация: 09.11.2019
Сообщений: 6

Спасибо за ответы
Ответить с цитированием
  #7 (permalink)  
Старый 10.11.2019, 01:12
Новичок на форуме
Отправить личное сообщение для zheka79 Посмотреть профиль Найти все сообщения от zheka79
 
Регистрация: 09.11.2019
Сообщений: 6

А как удалить объект с определенным id?
Ответить с цитированием
  #8 (permalink)  
Старый 10.11.2019, 01:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от zheka79
А как удалить объект с определенным id?
пост #2 там удаление и добавление от одного элемента до массива элементов.
строка 14 удаление обьекта с id = 17999996000
строка 22 добавление трёх обьектов после обьекта с dx = 17999994000;

Последний раз редактировалось рони, 10.11.2019 в 01:37.
Ответить с цитированием
  #9 (permalink)  
Старый 10.11.2019, 01:36
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

У вас массив объектов, а в нем удалить элемент сократив массив, это выполнить функцию splice (почитать, это не так сложно для понимания), в которую нужно передать индекс элемента, в котором и находится объект с указанным ID, и количество удаляемых элементов, то есть для удаления одного 1.

var del = 17999994000, //id удялемого
 i = Obj.data.findIndex(({id}) => id == del); //индекс удаляемого объекта в массиве
Obj.data.splice(i, 1); //удаление
Ответить с цитированием
  #10 (permalink)  
Старый 10.11.2019, 01:52
Новичок на форуме
Отправить личное сообщение для zheka79 Посмотреть профиль Найти все сообщения от zheka79
 
Регистрация: 09.11.2019
Сообщений: 6

Парни, реально помогаете. Спасибо!
А как перебрать data и получить значения id, price, size?

Пробовал
for (var key in Obj.data)
{
   console.log(key);
}


не прокатывает. На php таких проблем нет.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Количество отмеченный дней недели между двумя датами freenick jQuery 7 19.01.2016 00:25
Как добавить объект в панораму 360 с использованием Three.js? protexon Общие вопросы Javascript 0 29.10.2015 12:21
Как вставить в событие, указатель на объект, который получает это событие? Pacan228 Общие вопросы Javascript 2 04.07.2012 19:53
jQuery (Как открыть объект в этом же окне, щёлкнув по нему мышкой) Объект кусок карты hadzhimuratov (X)HTML/CSS 32 18.06.2012 17:54
Два HTML тега <td>, между которых нужно вставить елемент Bebarr Swallow Events/DOM/Window 2 23.05.2011 17:11