我正在嘗試從 codewars 完成這個練習。指令說:“撰寫一個函式,在二維陣列中查找陣列并回傳第一個匹配元素的索引。如果沒有匹配,你的函式應該回傳 -1”
例子:
var arrayToSearch = [[1,2],[3,4],[5,6]];
var query = [1,2]; // => 0
query = [5,6]; // => 2
query = [9,2]; // => -1
這是我的解決方案,但仍然失敗。
var searchArray = function (arrayToSearch, query) {
for(i = 0; i < arrayToSearch.length; i ) {
for (j = 0; j < arrayToSearch[i]; j ) {
if (arrayToSearch[i][j] === query) {
return i;
}
}
}
return -1;
}
我不確定我做錯了什么,但我認為問題出在 if 陳述句中,但我不知道它是什么。
uj5u.com熱心網友回復:
邏輯問題。
您的第二個 if 條件j < arrayToSearch[i]將始終回傳 false,因為您正在將一個數字j與一個陣列進行比較arrayToSearch[i]。在這種情況下,數字j將與陣列中的第一個元素進行比較arrayToSearch,這使得函式始終回傳 -1。
更正的代碼
var arrayToSearch = [[1, 2], [3, 4], [5, 6]];
var query = [1, 2]; // => 0
// query = [5, 6]; // => 2
// query = [9, 2]; // => -1
var searchArray = function (arrayToSearch, query) {
for (i = 0; i < arrayToSearch.length; i ) {
let isEqual = true;
for (j = 0; j < arrayToSearch[i].length; j ) {
isEqual = isEqual && (arrayToSearch[i][j] === query[j])
}
if (isEqual) {
return i;
}
}
return -1;
}
console.log(searchArray(arrayToSearch, query));
uj5u.com熱心網友回復:
這個簡單的代碼將起作用。
var arrayToSearch = [[1,2],[3,4],[5,6]];
var query = [1,2];
var searchArray = function (arrayToSearch, query) {
for (var i = 0; i < arrayToSearch.length; i ) {
if (arrayToSearch[i][0] == query[0] && arrayToSearch[i][1] == query[1]) {
return true;
}
}
return -1;
}
uj5u.com熱心網友回復:
如果你不介意的話,單線:
const arrayToSearch = [[1,2],[3,4],[5,6]];
const query1 = [1,2];
const query2 = [3,4];
const query3 = [5,6];
const query4 = [9,2];
const searchArray = (arr, query) => arr.map(e => e.toString()).indexOf(query.toString());
console.log(`[${query1}]:`, searchArray(arrayToSearch, query1));
console.log(`[${query2}]:`, searchArray(arrayToSearch, query2));
console.log(`[${query3}]:`, searchArray(arrayToSearch, query3));
console.log(`[${query4}]:`, searchArray(arrayToSearch, query4));
.as-console-wrapper{min-height: 100%!important; top: 0}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/443224.html
標籤:javascript 数组
