2017-07-26 20 views
1

アルファベットの範囲ピッカーを構築しています。だから、あなたは["A", "D"]を選んで、あなただけ、私はちょうど["A", "A"]または["D", "D"]を返すようにしたい、["A", ""]または["", "D"]を選ぶ場合には、その姓A、B、C、Dのサイズ2の配列 - 要素の1つが空の場合、それを他と等しく設定します

で始まるしかし、連絡先を探します。

const lookup = letters; 

if (letters[0] === '' && letters[1] !== '') { 
    lookup[0] = letters[1]; 
} 
if (letters[0] !== '' && letters[1] === '') { 
    lookup[1] = letters[0]; 
} 

おかげ

+0

あなたは 'lookup'と' letters'を混合している理由はありますか?彼らは両方とも同じ配列を参照します。 – 4castle

答えて

1

あなたはロジックを少し凝縮できます

次のことを書くの代替があります。

const lookup = ['A', '']; 

lookup[0] = lookup[0] || lookup[1]; 
lookup[1] = lookup[1] || lookup[0]; 

console.log(lookup); 
+0

現実のコードでは、 'letters'があらかじめ宣言されていることを確認してください。このような変数を初期化すると、ローカル' const'ではなく 'letters'が暗黙的にグローバル変数として生成されるからです。 – 4castle

+0

@ 4castle、フィードバックありがとう。私はそれを認識しませんでした。私は私の答えを更新しました。 – fubar

0

あなたは、配列をマッピングし、現在の値が空の場合は、次の要素の値が、前の要素の値または''のいずれかに設定することができます。

let arr1 = ['A', '']; 
 
let arr2 = ['', 'D']; 
 
let arr3 = ['A', 'D']; 
 
let arr4 = ['', '']; 
 

 
function fix(arr) { 
 
    return arr.map((cv, idx, ar) => cv === '' ? ar[idx + 1] || ar[idx - 1] || '' : cv); 
 
} 
 

 
console.log(fix(arr1)); 
 
console.log(fix(arr2)); 
 
console.log(fix(arr3)); 
 
console.log(fix(arr4));

関連する問題