Javascript 在块[]中使用if-else语句
我有以下声明:Javascript 在块[]中使用if-else语句,javascript,Javascript,我有以下声明: arr.push([student.name,student.id]); 我想在此语句中添加一个if-else块,以便仅当if为真时,我才可以添加student.name,例如: arr.push([student.name if (validName(student.name)) ,student.id]); arr.push([student.name if (validName(student.name)), stu
arr.push([student.name,student.id]);
我想在此语句中添加一个if-else
块,以便仅当if
为真时,我才可以添加student.name
,例如:
arr.push([student.name if (validName(student.name))
,student.id]);
arr.push([student.name if (validName(student.name)),
student.id if (validId(student.id) && idContainsNine(student.id)),
student.avg if (student.avg !== 'undefined'),
...
]);
但是这种语法是无效的。有没有合适的方法来实现这个想法
编辑:
我的数组包含很多元素,我想对其中的大多数元素(如果不是全部的话)进行某种检查。比如:
arr.push([student.name if (validName(student.name))
,student.id]);
arr.push([student.name if (validName(student.name)),
student.id if (validId(student.id) && idContainsNine(student.id)),
student.avg if (student.avg !== 'undefined'),
...
]);
只有当
if
语句为true时,我才会推送值。如果它为假,它将不会推动它。例如,如果validName(student.name)
返回false,它将不会在数组中推送student.name
。考虑三元运算符
cost
includeName = name => validName(name) ? [name] : [],
includeId = id => validId(id) && idContainsNine(id) ? [id] : [],
includeAVG = avg => avg !== 'undefined' ? [avg] : [];
arr.push([
...includeName(student.name),
...includeId(student.id),
...includeAVG(student.avg)
]);
arr.push([validName(student.name)?student.name:'',student.id]);
当您得到无效的
student.name
时,将空字符串值'
替换为您想要的值。使用此值。它可能会对您有所帮助
arr.push([student.name,(student.id ? student.id : '')]);
可以使用条件运算符,只获取具有有效值的数组
array.push(validName(student.name)
? [student.name, student.id]
: [student.id]
);
另一种方法是使用检查后返回的函数,可以是带值数组,也可以是不带值数组 要使用此结果,需要展开数组,如果它不包含任何元素,则不会增加数组的长度
cost
includeName = name => validName(name) ? [name] : [],
includeId = id => validId(id) && idContainsNine(id) ? [id] : [],
includeAVG = avg => avg !== 'undefined' ? [avg] : [];
arr.push([
...includeName(student.name),
...includeId(student.id),
...includeAVG(student.avg)
]);
另一种解决方案是使用一个检查数组,在出现不需要的项目时返回一个自己的
符号
(如果未定义
或``null`是一个已使用的值),并在将数组推送到结果集之前对其进行过滤
const
EMPTY = new Symbol('empty'),
checkName = ({ name }) => validName(name) ? name : EMPTY,
checkId = ({ id }) => validId(id) && idContainsNine(id) ? id : EMPTY,
checkAVG = ({ avg }) => avg !== 'undefined' ? avg : EMPTY;
array.push([checkName, checkId, checkAVG]
.map(fn => fn(student))
.filter(v => v !== EMPTY)
);
如果无效,您想添加什么?
if(validName(student.name)){arr.push([student.name,student.id]);}否则{if(true){//do what you want}
您可以使用三元运算符,您想用什么来代替名称?省略这一部分?请查看我的编辑。这不是我需要的,因为我有很多这样的检查。请查看我的编辑。