Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 大小为2的数组-如果其中一个元素为空,则将其设置为与另一个元素相等_Javascript_Arrays - Fatal编程技术网

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,感谢您的反馈。我没有意识到这一点。我已经更新了我的答案。