有没有办法在第一场比赛时停止jQuery.map

时间:2017-10-22 15:43:07

标签: javascript jquery

我有一个对象数组,我通过id搜索,我希望在第一次匹配后停止jQuery.map,这是浪费时间继续搜索后发现了它的价值。

var arrayOfObjects = [{id:1, val: ''},{id:2, val: ''}];
var index = $.map(arrayOfObjects, function (obj, index) {
    if (obj.id === id) {
        return index;
    }
});

我希望返回aslo停止地图执行。

有没有办法用$ .map()或其他方式来实现呢?

2 个答案:

答案 0 :(得分:3)

您可以使用普通的javascript方法findIndex()

var arrayOfObjects = [{id:1, val: ''},{id:2, val: ''}];
var index = arrayOfObjects.findIndex(obj => obj.id == 2);
console.log(index)

答案 1 :(得分:1)

不,不可能通过迭代数组的下一个元素来停止$.map()回调函数。

您也可以使用$.each()并返回false

var arrayOfObjects = [{
  id: 1,
  val: ''
}, {
  id: 2,
  val: ''
}];
var index = [];
var id = 1;
$.each(arrayOfObjects, function(i, obj) {
  console.log(i);
  if (obj.id === id) {
    // `.push()` the object `obj` or current index `i` of iteration here
    index.push(i);
    return false
  }    
});
console.log(index);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>