2015-10-06 3 views
-5

я хочу, чтобы срастить массив, но индекс не работаетсращивания массив из данных

var kode_pelayanan = []; 
function deleteKodePelayanan(index){ 
    kode_pelayanan.splice(index, 1); 
    console.log(kode_pelayanan); 
} 

я попытался в консоли и массива для kode_pelayanan есть. Этот массив получить от входа

kode_pelayanan array ["LB1", "LB2", "LHA01", "LHA02"] 

, но когда я запускаю функцию deleteKodePelayanan() и сращивать LB2. значение

["LB2", "LHA01", "LHA02"] 
+3

Как вы получаете индекс? –

+0

'deleteKodePelayanan()' будет эквивалентно 'splice (undefined, 1)' или 'splice (0, 1)', что означает начало с индексом '0' и delete * one * element. Который, так как ваши результаты верны. Попробуйте 'deleteKodePelayanan (1)' и посмотрим, что произойдет. Также 'deleteKodePelayanan (" LB2 ")' также будет принудительно введен в '0'. Та же проблема. – Sukima

+0

индекс - это числовое значение. Чтобы получить ваши результаты, вам нужно передать 0 (или значение, которое отличает 0 (например, неопределенный)) – manonthemat

ответ

0

Пробуйте проверить правильность индекса перед сращиванием.

function deleteKodePelayanan(index){ 
    index = parseInt(index,10); 
    if (isNaN(index)) { 
    // index is not a number 
    return; 
    } else if (!(index in kode_pelayanan)) { 
    // index is a number but the value isn't set 
    return; 
    } 
    kode_pelayanan.splice(index, 1); 
} 
+0

Пользователь может 'сращивать'' undefined' элемент справа? – Rayon

+0

Почему так много if/else? 'index> = 0' проще и удобочитаемо. Err, если вы сначала используете 'indexOf'. – Sukima

+0

Вы правы undefined является допустимым значением, поэтому я изменил его, чтобы искать индекс. Я хотел сделать валидацию существования индекса. Может не понадобиться с сращиванием, я не знаю. – wolfhammer

0

Если я следовать за мыслью, я думаю, что вы хотите знать, как удалить элемент из массива на основе значений элементов не на основе индекса. Ответ - два шага. Найдите индекс, затем используйте сращивание, чтобы удалить его.

Используйте indexOf, чтобы найти индекс первым.

var kode_pelayanan = ["LB1", "LB2", "LHA01", "LHA02"]; 

function deleteKodePelayanan(value){ 
    var index = kode_pelayanan.indexOf(value); 
    if (index >= 0) { 
     kode_pelayanan.splice(index, 1); 
    } 
    console.log(kode_pelayanan); 
} 

deleteKodePelayanan("LB2"); // => ["LB1", "LHA01", "LHA02"] 
Смежные вопросы