📅  最后修改于: 2023-12-03 14:52:53.736000             🧑  作者: Mango
当我们需要在一个数组中查找特定条件匹配的对象时,可以使用 jQuery 中的 grep()
函数实现。但是,如何获取匹配对象的索引呢?下面是一些方法供参考:
indexOf()
由于 jQuery 中的 grep()
函数返回的是一个过滤后的新数组,我们可以使用 JavaScript 原生的 indexOf()
方法来查找匹配对象在原数组中的索引。例如:
var data = [
{ name: "John", age: 25 },
{ name: "Jane", age: 30 },
{ name: "Mike", age: 35 }
];
var match = $.grep(data, function(obj) {
return obj.age === 30;
});
if (match.length) {
var index = data.indexOf(match[0]);
console.log(index); // 输出 1
}
在上面的例子中,我们使用 $.grep()
函数查找年龄为 30 的对象,并将其存储在变量 match
中。接下来,我们使用 indexOf()
方法查找 match
中的第一个元素在 data
中的索引,并将其存储在变量 index
中。
$.map()
另一种方法是使用 jQuery 中的 $.map()
函数。这个函数可以让我们遍历一个数组,并返回一个新数组,新数组的每个元素都是我们在遍历期间返回的值。因此,我们可以在遍历期间返回每个匹配对象在原数组中的索引。例如:
var data = [
{ name: "John", age: 25 },
{ name: "Jane", age: 30 },
{ name: "Mike", age: 35 }
];
var indexes = $.map(data, function(obj, index) {
if (obj.age === 30) {
return index;
}
});
if (indexes.length) {
console.log(indexes[0]); // 输出 1
}
在上面的例子中,我们使用 $.map()
函数遍历 data
数组,并返回一个新数组 indexes
,这个新数组中的每个元素都是年龄为 30 的对象在 data
数组中的索引。
获取数组中特定条件匹配对象的索引,可以使用 indexOf()
或 $.map()
函数。这两种方法都能够实现,并且各有优劣。indexOf()
方法更简单易懂,但是只能获取第一个匹配对象的索引。$.map()
方法可以获取所有匹配对象的索引,但是代码稍微复杂一些。在实际开发中,我们可以根据具体情况选择合适的方法。