让我们说您在数组上使用indexOf来查找所有表示apple的情况。如果在1号,2号和3号正子又返回了3个情况。
现在让我们说有一个数组= [10,20,30,40,50,60,70,80,90,100]
有没有一种方法可以使用案例1,2和3得出6。所以有一种方法可以转到位置6“ 70”并产生该数字。根据indexOf提供的内容,有一种方法可以从数组中选择该数字。同样,如果indexOF产生3.5,那么也有办法获得35(即3.5)。
答案 0 :(得分:1)
如果我的理解正确,您可以使用Array.reduce()来获取与某个搜索词匹配的索引的总和。然后,您可以使用reduce()
中的结果来访问数字数组:
let test = ["orange", "apple", "banana", "apple"];
let numbers = [10, 20, 30, 40, 50, 60, 70, 80, 90];
const getSumOfIdxs = (arr, str) =>
{
return arr.reduce((acc, curr, idx) =>
{
if (curr === str)
{
if (acc < 0) acc += 1;
acc += idx;
}
return acc;
}, -1);
}
let res = getSumOfIdxs(test, "apple");
console.log("Sum of indexes: ", res);
console.log("Element from numbers: ", numbers[res]);
res = getSumOfIdxs(test, "hello");
console.log("Sum of indexes: ", res);
console.log("Element from numbers: ", numbers[res]);
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
答案 1 :(得分:0)
是的,您可以-filter
遍历数组,找到所有apple
,然后map
从原始数组reduce
到一个索引,并获得该索引处的项目。
const arr = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
const appleNums = [20, 30, 40];
const resultingAppleNum = arr[arr.filter(e => appleNums.includes(e)).map(e => arr.indexOf(e)).reduce((acc, curr) => acc + curr)];
console.log(resultingAppleNum);