我有一个对象数组,我通过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()或其他方式来实现呢?
答案 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>