1

配列から文字列を削除する関数を JavaScript で記述しようとしています。配列は動的に作成され、時々新しい文字列を追加します。文字列を削除するときは、最初に文字列が本当に含まれているかどうかを確認します。

もう1つ条件があります。削除される文字列がたとえば「自転車」と等しい場合は、「バイク」もチェックし、存在する場合はそれも削除します。また、指定された文字列が「バイク」の場合、「自転車」の可能性のある出現を削除したいと考えています。

これまでのところ、次のようなものがあります。

options_array = []

function remove_option(option) {
  var option_index = options_array.indexOf(option);
  if(option_index != -1)
    options_array.splice(option_index, 1);
  if(option == 'bicycle') {
    option_index = options_array.indexOf('motorbike');
    if(option_index != -1)
      options_array.splice(option_index, 1);
  } else if(option == 'motorbike') {
    option_index = options_array.indexOf('bicycle');
    if(option_index != -1)
      options_array.splice(option_index, 1);
  }
}

それは機能しますが、より良く、よりDRYにすることは可能ですか?

4

4 に答える 4

0

エイリアス配列を使用してそれらをループすることができます

var options_array = ["motorbike",'bicycle','bike','car','vanagon'];

function remove_option(option,alias_array) {
    var option_index = options_array.indexOf(option);
    if(option_index != -1){
        if(alias_array.indexOf(option) != -1){
            for (var i=0;i<alias_array.length;i++){ 
                alias_index = options_array.indexOf(alias_array[i]);
                if(alias_index != -1){
                    options_array.splice(alias_index, 1);
                }   
            }
        }
    }
    return options_array;
}

console.log(remove_option('bike',['motorbike','bicycle','bike']));
于 2013-10-08T13:49:54.017 に答える