【问题标题】:Need to iterate over the last two objects需要遍历最后两个对象
【发布时间】:2018-03-10 03:50:09
【问题描述】:

我有如下值的对象数组,

{
 [ 
   {foo: a, bar: b}
 ]
}

我需要检查foo的数组对象成员的最后两个值是否至少包含一个'x',所以当数据像这样添加时,

{
 [ 
   {foo: a, bar: b}, 
   {foo: x, bar: d},
   {foo: e, bar: f}
 ]
}

它返回真, 但是,当数据仍然为空或小于 1 时,它会返回错误,因为 foo 尚未定义。

我尝试使用 array[length - 2].foo === 'x'? : tit() : tat() 之类的 if 语句进行检查,但由于它尚未定义/添加,但它仍未定义。

检查的正确方法是什么?奇怪的是,我也不能用else 困住它

【问题讨论】:

  • 在处理数组之前添加对length的检查。
  • 我首先通过if (array[0].foo) 进行了检查,但仍然返回 undefined,因为尚未创建 array[0].foo

标签: javascript arrays function object conditional


【解决方案1】:

您可以使用slice 方法执行此操作,以获取最后的two 元素。

array.slice(-2)

另外,使用some 方法来检查foo 的数组对象成员是否至少包含一个'x'

let array= [{foo: 'a', bar: 'b'}, {foo: 'x', bar: 'd'}, {foo: 'e', bar: 'f'}];
console.log(array.slice(-2).some(a=>a.foo=='x'));
array=[];
console.log(array.slice(-2).some(a=>a.foo=='x'));

【讨论】:

  • 所以当数组为空时它返回 false 而不是 undefined?
  • @Ardhi,它返回 false。看看更新的答案。
猜你喜欢
  • 1970-01-01
  • 2015-10-15
  • 2015-10-27
  • 2015-05-25
  • 1970-01-01
  • 1970-01-01
  • 2014-08-09
  • 2020-12-21
  • 2013-07-12
相关资源
最近更新 更多