Javascript 大小为2的数组-如果其中一个元素为空,则将其设置为与另一个元素相等
我正在建造一个按字母顺序排列的范围选择器。因此,您选择Javascript 大小为2的数组-如果其中一个元素为空,则将其设置为与另一个元素相等,javascript,arrays,Javascript,Arrays,我正在建造一个按字母顺序排列的范围选择器。因此,您选择[“A”,“D”],它将查找姓氏以A,B,C和D开头的联系人 但是,如果您只选择[“A”,“A”]或[,“D”],那么我只想返回[“A”,“A”]或[“D”,“D”] 除了写以下内容,还有其他选择吗: const lookup = letters; if (letters[0] === '' && letters[1] !== '') { lookup[0] = letters[1]; } if (letters[0]
[“A”,“D”]
,它将查找姓氏以A,B,C和D开头的联系人
但是,如果您只选择[“A”,“A”]
或[,“D”]
,那么我只想返回[“A”,“A”]
或[“D”,“D”]
除了写以下内容,还有其他选择吗:
const lookup = letters;
if (letters[0] === '' && letters[1] !== '') {
lookup[0] = letters[1];
}
if (letters[0] !== '' && letters[1] === '') {
lookup[1] = letters[0];
}
谢谢你可以把逻辑浓缩一点
const lookup = ['A', ''];
lookup[0] = lookup[0] || lookup[1];
lookup[1] = lookup[1] || lookup[0];
console.log(lookup);
您可以映射数组,如果当前值为空,则将其设置为下一个元素值、上一个元素值或
'
让arr1=['A','';
设arr2=['',D'];
设arr3=['A','D'];
设arr4=['','';
功能修复(arr){
返回arr.map((cv,idx,ar)=>cv==''?ar[idx+1]|ar[idx-1]||'':cv);
}
console.log(fix(arr1));
控制台日志(fix(arr2));
控制台日志(fix(arr3));
控制台日志(fix(arr4))
您混合使用查找
和字母
有什么原因吗?它们都引用相同的数组。在实际代码中,请确保事先声明了字母
,因为这样初始化变量会隐式地将字母
创建为全局变量,而不是局部常量
@4castle,感谢您的反馈。我没有意识到这一点。我已经更新了我的答案。