2017-01-28 5 views
-1

Это мой массив объектовКак обновить индекс объекта массива, когда я удаляю объект объекта массива из массива в angualrjs?

var item = [ 
    {index:1, name: 'miraje'}, 
    {index:2, name: 'alamin'}, 
    {index:3, name: 'behestee'}, 
    {index:4, name: 'arif'}, 
    {index:5, name: 'riad'} 
]; 

, когда я удалить объект как индекс: 2, и это время я хочу, чтобы обновить значение индекса как ..

var item = [ 
      { index: 1, name: 'miraje'}, 
      { index: 2, name: 'behestee'}, 
      { index: 3, name: 'arif'}, 
      { index: 4, name: 'riad'} 
     ]; 
+0

Показать код усилия – Shubhranshu

+0

обслуживаемые ответ не соответствует требованиям с поиском 'индекс = 2'. он использует известный индекс ('1') массива, который не указан. –

ответ

0

После удаления элемента вы можете используйте forEach() цикл для изменения индексов.

var item = [ 
 
{index:1, name: 'miraje'}, 
 
{index:2, name: 'alamin'}, 
 
{index:3, name: 'behestee'}, 
 
{index:4, name: 'arif'}, 
 
{index:5, name: 'riad'} 
 
]; 
 

 
item.splice(1, 1) 
 
item.forEach((e, i) => e.index = i + 1) 
 
console.log(item)

0

Удалите объект и изменить свойство индекса каждого объекта,

ДЕМО

i=1; 
 
var item = [ 
 
{index:1, name: 'miraje'}, 
 
{index:2, name: 'alamin'}, 
 
{index:3, name: 'behestee'}, 
 
{index:4, name: 'arif'}, 
 
{index:5, name: 'riad'} 
 
]; 
 
console.log(item); 
 
delete item[ 2 ]; 
 
console.log(item); 
 
item.forEach(function(obj) { 
 
    obj.index = i; 
 
    debugger; 
 
    i++; 
 
}); 
 
console.log(item);

0

В принципе, вам нужно найти товар с index, удалить его и обновить все следующие предметы.

function deleteItem(array, index) { 
 
    var i = 0, found = false; 
 
    while (i < array.length) { 
 
     if (found) { 
 
      --array[i].index; 
 
      ++i; 
 
      continue; 
 
     } 
 
     if (found = array[i].index === index) { 
 
      array.splice(i, 1); 
 
      continue; 
 
     } 
 
     ++i; 
 
    } 
 
} 
 

 
var items = [{ index: 1, name: 'miraje' }, { index: 2, name: 'alamin' }, { index: 3, name: 'behestee' }, { index: 4, name: 'arif' }, { index: 5, name: 'riad' }]; 
 

 
deleteItem(items, 2); 
 
console.log(items);
.as-console-wrapper { max-height: 100% !important; top: 0; }

0

Просто для разнообразия, без изменения исходного массива эффективных О (п) подход будет также следующим образом. Мы также можем предоставить диапазон для удаления элементов ...

Диапазон предоставляется с индексами массива, а не свойствами индекса объекта.

var item = [ 
 
    {index:1, name: 'miraje'}, 
 
    {index:2, name: 'alamin'}, 
 
    {index:3, name: 'behestee'}, 
 
    {index:4, name: 'arif'}, 
 
    {index:5, name: 'riad'} 
 
]; 
 
function deleteObjectsFromArray(a,j,k){ 
 
    return a.reduceRight((p,c,i) => i >= j && i < k ? p 
 
                : i >= k ? (c.index -= k-j, p[c.index-1] = c, p) 
 
                  : (p[c.index-1] = c, p),[]); 
 
} 
 

 
console.log(deleteObjectsFromArray(item,2,4));

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