Javascript 除去对象数组中的“未定义”

Javascript 除去对象数组中的“未定义”,javascript,arrays,object,Javascript,Arrays,Object,我有一个函数,它接收参数作为参数: export const addCalculations = (params) => { console.log(params); }; 然后我想访问id值,但当我访问params[0].id时,它会抛出一个错误(无法读取未定义的属性id)。当我看到控制台时,该函数被多次调用,有时返回undefined。我怎样才能去掉那些未定义的数组,而只得到最后一个数组 params[0]本身是未定义的,因此在调用params[0].id之前,您应该进行检查 i

我有一个函数,它接收参数作为参数:

export const addCalculations = (params) => {
  console.log(params);
};
然后我想访问
id
值,但当我访问
params[0].id
时,它会抛出一个错误(无法读取未定义的属性id)。当我看到控制台时,该函数被多次调用,有时返回
undefined
。我怎样才能去掉那些未定义的数组,而只得到最后一个数组


params[0]
本身是未定义的,因此在调用
params[0].id之前,您应该进行检查

if (params[0]) {
   id = params[0].id;
   ...
}
如果要过滤参数数组,可以使用
filter
函数

filterd = params.filter( x => {

  if (x) {
   return true;
  } 

  return false;

})

//continue with filtered 
...

我想你应该检查没有参数调用函数的内容,并在那里修复它。在没有检查索引是否存在的情况下,不要访问单个索引。您已经硬编码了
[0]
,因此如果没有传递任何消息,那么在访问
.id
时将抛出错误。您可以在获取id之前检查参数是否存在。
if(params){console.log(params)(params)(params)(console.log)(params[0].id);}
.if(params!=null){console.log(params[0].id)}它将检查是否未定义问题是它的字段是
未定义的对象
,因此当您调用
params[0].id
时,它会给您提供例外,该筛选器可以缩短为
x=>x
,或者只需传入
布尔值
,以获得语义更明显的内容。正确,然而,我试图让它对用户和@Liz模仿更加清晰易读