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}
您可以使用三元运算符,您想用什么来代替名称?省略这一部分?请查看我的编辑。这不是我需要的,因为我有很多这样的检查。请查看我的编辑。