如何根据一定的数量从数组中选择

时间:2019-04-17 21:48:01

标签: javascript arrays indexof

让我们说您在数组上使用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)。

2 个答案:

答案 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);