function ha(num,tar){
var arr =[]
for(var i =0;i<num.length -1;i++){
if(arr.length === 2) return
for(var ind =i+1;ind<num.length;ind++){
var sum = num[i] + num[ind]
if(sum === tar){
// console.log(num[i] ,num[ind],sum)
arr.push(i)
arr.push(ind)
//console.log(arr)
}
}
return arr
}
}
ha([8,1,4,5,8],9)
console.log(ha([8,1,4,5,8],9)) //[0,1]
目的是為了一個(gè)數(shù)組里腌且,找兩個(gè)值的和等于預(yù)設(shè)的那個(gè)值敞嗡,輸出那兩個(gè)值的下標(biāo)并蝗。
思路很簡(jiǎn)單的,但是是最老土的方法了秸妥,里面有性能的損耗的滚停,如果是要找到所有的結(jié)果倒是不會(huì)出現(xiàn)損耗了。然后雖然加了個(gè)判斷粥惧,降低損耗键畴,但是沒(méi)有完全避免的。
有待改進(jìn)突雪。
我剛開(kāi)始寫(xiě)了老是出錯(cuò)起惕,但是自己覺(jué)得思路是對(duì)的,哪里出錯(cuò)了咏删?后來(lái)自己試了好多地方惹想,終于發(fā)現(xiàn)了,心里很懊悔的督函,就是等于號(hào)嘀粱,if判定的時(shí)候,最好是三個(gè)等號(hào)去判定辰狡。這是教訓(xùn)啊锋叨。
還有,這是一個(gè)循環(huán)里套著另外一個(gè)循環(huán),這里的作用域一定要分清宛篇,尤其是哪層才需要return出來(lái)娃磺。
![](http://ww1.sinaimg.cn/large/e3185026gy1flax7e4z88j21bu0mwgq6.jpg)
這里,有個(gè)bug赛糟,最后的數(shù)組里最后兩個(gè)值派任,其實(shí)就是第一、第二個(gè)值的璧南。具體如何產(chǎn)生的呢掌逛?其實(shí)我是懵逼的,暫時(shí)不明白司倚,因?yàn)槲壹恿藯l件判斷豆混,只要下標(biāo)是最后一個(gè)就終止,其實(shí)還有一個(gè)缺點(diǎn)动知,這個(gè)下標(biāo)是用indexOf找的皿伺,如果一個(gè)數(shù)組里有很多值相同的,那就又要做判斷控制了盒粮,鸵鸥,,
但是在這里丹皱,其實(shí)要求只是輸出第一組妒穴,這就簡(jiǎn)單了:
![](http://ww1.sinaimg.cn/large/e3185026gy1flaxgjg6u8j21720m242i.jpg)
看看,我把循環(huán)的判定撤了摊崭,只是在循環(huán)里最后用return了讼油,結(jié)果,循環(huán)自動(dòng)斷了呢簸。這里是完美的矮台。
但是,如果是找出所有的的話(huà)根时,不要用indexOf求下標(biāo)嘿架,還是最根本的for循環(huán),這肯定沒(méi)錯(cuò)的啸箫。