題目描述:在一個(gè)二維數(shù)組中(每個(gè)一維數(shù)組的長(zhǎng)度相同)企孩,每一行都按照從左到右遞增的順序排序殿遂,每一列都按照從上到下遞增的順序排序谬运。請(qǐng)完成一個(gè)函數(shù),輸入這樣的一個(gè)二維數(shù)組和一個(gè)整數(shù)杖狼,判斷數(shù)組中是否含有該整數(shù)。一個(gè)簡(jiǎn)單的數(shù)組遍歷題妖爷。
答案:js語(yǔ)言:
functionFind(target, array){returnarray.some(arr => arr.some(e => e === target))}
解釋:
外面的some方法是對(duì)每個(gè)一維進(jìn)行遍歷蝶涩,里面的some方法是對(duì)每個(gè)一維的每一個(gè)元素進(jìn)行遍歷,判斷是否嚴(yán)格等于要找的target元素絮识,復(fù)雜度為n方绿聘。
?=>是es6語(yǔ)法中的arrow function
例:(x) => x + 6 相當(dāng)于
function(x){
? ? return x + 6;
};
那么e => e === target表示返回嚴(yán)格等于target的元素e
some()方法用于檢測(cè)數(shù)組中的元素是否滿足指定條件
some() 方法會(huì)依次執(zhí)行數(shù)組的每個(gè)元素:
如果有一個(gè)元素滿足條件,則表達(dá)式返回true?, 剩余的元素不會(huì)再執(zhí)行檢測(cè)次舌。
如果沒(méi)有滿足條件的元素熄攘,則返回false。
注意:?some() 不會(huì)對(duì)空數(shù)組進(jìn)行檢測(cè)彼念。
注意:?some() 不會(huì)改變?cè)紨?shù)組挪圾。
這里小記一下some以及類似的every浅萧,對(duì)比一下其他遍歷方法
some() 有一個(gè)元素滿足條件,即返回true
const a = [1, 2, 3]console.log(a.some(v => v > 5))? //falseconsole.log(a.some(v => v < 2))? //true
every() 所有元素滿足條件哲思,即返回true
const a = [1, 2, 3]console.log(a.every(v => v < 5))? //trueconsole.log(a.every(v => v < 2))? //false
filter() 返回包含滿足條件元素的數(shù)組
const a = [1, 2, 3]
console.log(a.filter(v => v < 3))? // [1, 2]
map() 返回一個(gè)新數(shù)組
const a = [1, 2, 3]
console.log(a.map(v => v + 5))? // [6, 7, 8]
forEach() 僅循環(huán)惯殊,無(wú)返回值,本質(zhì)上相當(dāng)于for
const a = [1, 2, 3]
a.forEach(v => console.log(v))? // 1? ? 2? ? 3