通过 findIndex 按索引查找对象,如果没有找到则返回第一项

该函数findIndex将返回元素的索引,如果在列表中找到,则返回-1


但是,如果什么都没有找到,我想要一个现有的固定项,即第一个,而不是检查返回值:


if (id === -1)

  id = 0;

在 JavaScript 中有没有简单或更短的方法?


var items = [{

  message: 'Hello World',

  day: 'j1'

}, {

  message: 'Lorem ipsum dolor sit',

  day: 'j2'

}]


function idbyDay(day) {

  return this.items.findIndex(q => q.day === day);

}


function myFunction() {

    var day = document.getElementById("day").value

  console.log(day);

  var id = this.idbyDay(day);

  if (id === -1)

    id = 0;

  console.log(this.items[id]);

}

<input id="day" value="no"><button onclick="myFunction()">Try it</button>


小唯快跑啊
浏览 295回答 1
1回答

一只甜甜圈

您可以使用三元运算符,但不能再简化它了。function idbyDay(day) {&nbsp; const idx = this.items.findIndex(q => q.day === day)&nbsp; return idx !== -1 ? idx : 0;}或者,由于您仅使用索引从数组中获取项目,因此您可以使用Array#findnullish 合并运算符来提供默认值。function itembyDay(day) {&nbsp; return this.items.find(q => q.day === day) ?? this.items[0];}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript