节点 JS 在索引而不是索引处显示值

Node JS displaying value at index instead of indices

编写这个 2su​​ms 代码以获得高效 O(N) 以下问题的时间复杂度算法

            Input: nums = [2,7,11,15], target = 9
            Output: [0,1]
            Output: Because nums[0] + nums[1] == 9, we return [0, 1].

不幸的是,数组 nums 的值显示在输出中,而需要 indices 显示在输出

下面需要做哪些改动

            let hashTwoSum = (array, sum) => {
                let numsObj = {}
                let nums = []
               
                for(let i in array){
                    let addend = sum - array[i]
                   
                    if (addend in numsObj){

                        nums.push([addend, array[i]])

                    }
                    numsObj[array[i]] = i

                    
                }
                return nums
                
            }

            let array = [2,7,11,15]
            console.log(hashTwoSum(array,9))
            
            

感谢您的帮助

此致,

卡罗琳

正如@jriend00 所说,不要使用for(... in ...) 循环来迭代数组。但是在你的情况下,你需要索引,你需要使用旧的 for 循环:for(let i = 0; i < array.length; i++)。当你保存结果时,你需要同时推送 indices: nums.push([numsObj[addend], i]).

这是一个完整的例子:

let hashTwoSum = (array, sum) => {
    let numsObj = {}
    let nums = []

    for(let i = 0; i < array.length; i++){
        let addend = sum - array[i]

        if (addend in numsObj){
            nums.push([numsObj[addend], i])
        }
        numsObj[array[i]] = i
    }
    return nums
}

let array = [2,7,11,15,6]
console.log(hashTwoSum(array,17))

这将输出:

[ [ 0, 3 ], [ 2, 4 ] ]

因为 2 + 15 和 11 + 6 都等于 17.