удалить свойство с последовательным индексом в объекте

SELECT   FLOOR(UNIX_TIMESTAMP(timestamp)/(15 * 60)) AS timekey
FROM     table
GROUP BY timekey;
-1
задан Ori Drori 19 March 2019 в 05:42
поделиться

5 ответов

Опустите ключ, который вам не нужен, преобразуйте в массив, используя Object.values(), а затем верните обратно в объект, распространяясь на пустой объект:

const item = {
  0: 'A',
  1: 'B',
  2: 'C',
  3: 'D'
}

const result = { ...Object.values(_.omit(item, 1)) }

console.log(result)
[111 ]

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

const fn = (key, { [key]: _, ...rest }) => ({ ...Object.values(rest) })

const item = {
  0: 'A',
  1: 'B',
  2: 'C',
  3: 'D'
}

const result = fn(1, item)

console.log(result)

0
ответ дан Ori Drori 19 March 2019 в 05:42
поделиться

Использовать оператор удаления

delete item["1"];
0
ответ дан Mick 19 March 2019 в 05:42
поделиться

Вот еще одно решение, если вы не хотите полагаться на сторонние плагины. Лодаш также довольно тяжелая библиотека.

var deleteObj = ({data, index}) => {
    var objSize = Object.keys(data).length
    if (index > objSize -1) return data
    var count = index;
    delete data[count];
    count = count+1;
   while (count < objSize){
      data[count-1] = data[count];
      count = count+1;
  }
  delete data[count-1];
  return data;
}

deleteObj({data: {0: "A", 1: "B", 2: "C", 3: "D", 4: "E", 5: "F"}, index: 0});
0
ответ дан Cleriston 19 March 2019 в 05:42
поделиться

Или же вы можете использовать фильтр Лодаша непосредственно на объекте (на самом деле вы можете), чтобы удалить ненужные элементы, а затем создать массив за один шаг, а затем просто использовать оператор растяжения объекта для построения полученного объекта. .

Пример:

let o = {"0":"A","1":"B","2":"C","3":"D"},
    res = {..._.filter(o, (v, k) => k!=1)};
    
console.log(res);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>

0
ответ дан Koushik Chatterjee 19 March 2019 в 05:42
поделиться

Вы можете использовать массив для удаления и повторной индексации.

let item = {
  0: 'A',
  1: 'B',
  2: 'C',
  3: 'D'
};

// get values as an array
let arr = Object.values(item);

// remove element at index 1
arr.splice(1, 1);

// extract array to an object
item = {
  ...arr
};

console.log(item);

0
ответ дан Pranav C Balan 19 March 2019 в 05:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: