我用下面的代码构建一个数组:
var intestColonne = [];
$('.tbi').find('tr:first th').each(function(){
intestColonne.push(($(this).children('select').val()));
});
//intestColonne=intestColonne.pop(); //if this row is parsed the array becomes undefined
现在我想检查数组中是否有多个特定值的条目:
if(intestColonne.filter(x => x === "importo").length>1){
//check the index of each "importo" element
//store it into variables
//remove all the other "importo" leaving only the first (lowest index)
}
我被困在第一步,因为我还没有找到一个特定的函数,可以返回“importo”值的所有索引。indexOf
将返回第一个索引,lastIndexOf
将返回最后一个索引。使用indexOf我可以指定从哪里开始查找,但这很难满足我的目标。
有没有其他类型的搜索可以使用?
3条答案
按热度按时间n6lpvg4x1#
可以使用
map
来获取filter
之前的元素的索引。或者,使用
Array#reduce
。qojgxg4l2#
可以使用.map()方法创建一个数组,其中包含数组中特定值的所有索引。下面是一个示例:
这将创建一个数组importoIndexes,其中包含intestColonne数组中值“importo”的所有索引。
然后可以使用.slice()方法删除所有其他“importo”,只留下第一个(索引最低的)
z9smfwbn3#
Javascript数组过滤器方法的第二个参数提供元素的索引。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
所以你可以用indexOf得到第一个元素的索引,然后过滤它: