Dieser Artikel teilt Ihnen hauptsächlich eine Interviewfrage zu zweidimensionalen Javascript-Arrays. Ich hoffe, er kann Ihnen helfen. Implementieren Sie bei einem gegebenen zweidimensionalen Array eine funktionale Funktion fn und übergeben Sie eine Koordinate des zweidimensionalen Arrays an diese Funktion. Wenn der Wert dieser Koordinate „1“ ist, werden alle mit dieser Koordinate verbundenen Koordinaten verwendet, deren Koordinatenwert 1 ist zurückgegeben werden.
Zum Beispiel führt die Übergabe von fn([3,4]) zu:
[[3,4],[4,4],[5,4],[6,4] ,[ 7,4],[8,4],[8,5],[8,6]]
var arr =[
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,1,0,0,0,1,0,0],
[0,0,0,0,1,0,0,0,1,0,0],
[0,0,0,0,1,0,0,0,1,0,0],
[0,0,0,0,1,0,0,0,0,0,0],
[0,0,0,0,1,0,0,0,0,0,0],
[0,0,0,0,1,1,1,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
] ;
Lösungsidee: Einfach zuerst die Breite durchqueren. Als Referenz werden die Verbindungsbedingungen nicht angegeben und als horizontale und vertikale Richtungen betrachtet: Ja, sie müssen für eine neue Matching-Runde aus der Warteschlange entfernt werden, Sie müssen also nur eine andere Cache-Warteschlange verwenden, um die erfolgreichen Daten vergangener Matchings zu speichern. Es besteht keine Notwendigkeit, am Ende zu überqueren. Der Code lautet wie folgt:
var arr =[
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,1,0,0,0,1,0,0],
[0,0,0,0,1,0,0,0,1,0,0],
[0,0,0,0,1,0,0,0,1,0,0],
[0,0,0,0,1,0,0,0,0,0,0],
[0,0,0,0,1,0,0,0,0,0,0],
[0,0,0,0,1,1,1,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
]
function fn ([x, y]) {
if (arr[x][y] !== 1) return false
const queue = [[x, y]]
const memo = arr.map(row => new Array(row.length).fill(false))
const direction = [
[-1, 0],
[1, 0],
[0, -1],
[0, 1],
]
while(queue.length > 0) {
const [x, y] = queue.pop()
direction.forEach(([h, v]) => {
const newX = x + h
const newY = y + v
if (arr[newX][newY] === 1 && !memo[newX][newY]) {
memo[newX][newY] = true
queue.push([newX, newY])
}
})
}
const result = []
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr[i].length; j++) {
if(memo[i][j]) {
result.push([i, j])
}
}
}
return result
}
console.log(fn([3,4]))
var arr =[
Verwandte Empfehlungen: function fn(point) {
var memo = {}, result = [], direction = [[-1, 0],[1, 0],[0, -1],[0, 1]]
function dg([x, y]) {
result.push(memo[x + "," + y] = [x, y]);
direction.forEach(([h, v]) => {
const newX = x + h
const newY = y + v
if (arr[newX][newY] === 1 && !memo[newX + "," + newY]) {
dg([newX, newY]);
}
})
}
dg(point);
return result;
}
Definieren Sie ein zweidimensionales JavaScript-Array mit das Array, das das Array definiert. Zu realisieren_Grundkenntnisse
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,1,0,0,0,1,0,0],
[0,0,0,0,1,0,0,0,1,0,0],
[0,0,0,0,1,0,0,0,1,0,0],
[0,0,0,0,1,0,0,0,0,0,0],
[0,0,0,0,1,0,0,0,0,0,0],
[0,0,0,0,1,1,1,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0],
]
function fn ([x, y]) {
if (arr[x][y] !== 1) return false
const queue = [[x, y]]
const result = [[x,y]]
const memo = arr.map(row => new Array(row.length).fill(false))
const direction = [
[-1, 0],
[1, 0],
[0, -1],
[0, 1],
]
while(queue.length > 0) {
const [x, y] = queue.pop()
direction.forEach(([h, v]) => {
const newX = x + h
const newY = y + v
if (arr[newX][newY] === 1 && !memo[newX][newY]) {
memo[newX][newY] = true
queue.push([newX, newY])
result.push([newX, newY])
}
})
}
return result
}
Provinz- und Stadtverknüpfungsmenü, implementiert durch zweidimensionales JavaScript-Array_Javascript-Kenntnisse
Javascript zweidimensional Beispiel für Array-Transposition_ Javascript-Kenntnisse
Das obige ist der detaillierte Inhalt vonInterviewfragen zu zweidimensionalen Javascript-Arrays. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!