2016-07-29 3 views
0

Предположат, что у меня есть массив структурированный, как это:Как удалить элемент массива, используя определенное значение

{ q1: true, q2: false, q3: false, q4: true, q5:true } 

Есть ли способ, чтобы удалить все элементы, которые имеют «ложь» для значения в AngularJS?

Я попытался использовать splice(), получив номер индекса, без везения. Теперь я ищу способ, которым мне не нужно использовать определенный номер индекса.

Любая помощь будет оценена по достоинству. Спасибо.

ответ

1

Простой JavaScript подход

var r = { 
 
    q1: true, 
 
    q2: false, 
 
    q3: false, 
 
    q4: true, 
 
    q5: true 
 
}; 
 

 
for (a in r) { 
 
    if (!r[a]) { 
 
    delete r[a] 
 
    } 
 
} 
 

 
console.log(r);

+0

Только то, что я искал. Спасибо. Он отлично работает. :) –

0

Это не массив, это объект. Вы можете использовать эту функцию, чтобы удалить каждый ключ, значение которого falsy с:

angular.forEach(obj, function (val, key) { 
    if (!val) { 
    delete obj[key]; 
    } 
}); 
0

Вы поставляется объект, а не массив. Array.prototype.splice работает с массивами, а не с объектами.

К отфильтруйте нежелательные значения из массива, вы должны использовать Array.prototype.filter.

[true, false, false, true, true].filter(function(el){ return el; }); 
// returns [true, true, true] 
Смежные вопросы