1
A
回答
1
如果同時你的陣列只包含原語(如字符串或數字),最簡單的方法可能是遍歷數組並比較它們string representation
var arr = [ ['one'], ['one', 'three'], ['one', 'two', 'three'] ];
var search = ['one', 'three'];
function arrayInArray(haystack, needle) {
needle = '' + needle; // needle.toString()
for(var i = 0; i < haystack.length; i++) {
if(needle === '' + haystack[i]) {
return i;
}
}
return -1;
}
console.log(arrayInArray(arr, search));
+0
非常感謝。 :) – andy
1
我看到另一個答案已被接受,但我現在已經輸入了這個,所以不妨將它發佈:)
比較字符串表示是一個聰明的解決方案,但它做mor E '手動' 這樣可能更可讀的不經意的觀察者,或者自己6個月...
function isArraysEqual(a, b) {
if(!a || !b || a === b || a.length !=b.length) {
return false;
}
for(var i = 0; i < a.length; ++i) {
if (a[i] !== b[i]) {
return false;
}
}
return true;
}
function arrayContainsArray(parent, child) {
for(var i = 0; i < parent.length; ++i) {
var candidate = parent[i];
if(candidate instanceof Array && isArraysEqual(candidate, child)) {
return true;
}
}
return false;
}
var x = [[1,2,3],[4,5,6],[7,8,9]];
var y = [4,5,6];
var z = [10,11,12];
console.log("should be true: " + arrayContainsArray(x, y));
console.log("should be false: " + arrayContainsArray(x, z));
1
首先,代碼:
function equal(a, b) {
if (a == b) return true;
if (a instanceof Array && b instanceof Array)
return a.length == b.length && a.every(
function (element, index) { return equal(element, b[index]); });
return false;
}
function positionIf(array, predicate) {
for (var i = 0; i < array.length; i++)
if (predicate(array[i])) break;
return i;
}
var x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
var y = [4, 5, 6];
var z = [10, 11, 12];
function indexOfArray(array, element) {
return positionIf(
array, function (searched) { return equal(searched, element); });
}
// >>> indexOfArray(x, y);
// 1
// >>> indexOfArray(x, z);
// 3
說明:
無論其他問題如何,通用函數都是一件好事。這是一個恥辱,它不在標準庫中。但我相信許多流行的多用途圖書館提供了一個。
Position-if是做這種操作的已知成語。您會在許多語言的標準庫中找到類似的功能,例如C++或Common Lisp。有一個很好,但可能有些庫已經提供了它,所以檢查它(可能是Underscore?)。
保持代碼更一般,可以在未來重用。
返回的索引是超過數組邊界的第一個索引,以防未找到元素。據我所知,唐納德克努特首先認爲這是一個更合乎邏輯的事情。我不會就此進行辯論,我恰好認爲這也是正確的做法。
相關問題
- 1. 如何在數組中找到數字?
- 2. 如何在數組中找到奇數?
- 3. 在數組中找到重複數組
- 4. 如何在數組中找到峯值?
- 5. 如何在MongoDB的數組中找到所有數組
- 6. 如何檢查值是否在數組數組中找到
- 7. 如何在數組數組中找到元素的索引?
- 8. 在數組數組中找到丟失的數組
- 9. 在數組中找到NA
- 10. 找不到數組中的數組javascript
- 11. 如何從父數組中找到數組?
- 12. 如何從數組中找到值?
- 13. 如何從數組中找到模板?
- 14. 如何從數組中找到值
- 15. 如何找到point3d數組的中心?
- 16. 如何找到在一個數組
- 17. 如何在布爾數組中找到模式組?
- 18. 如何在PHP中將數組分組到一個數組中?
- 19. 如何在數組中找到找到的id的索引
- 20. Java在數組中找到三個數
- 21. 在numpy數組中查找數組?
- 22. 如何在matlab中的單元格數組中找到空數組?
- 23. 如何在數組數組中尋找最佳匹配元素?
- 24. 如何在java中查找數組的子數組
- 25. 找到數組中的字符串匹配數組在JavaScript中?
- 26. 找到C中的數組++
- 27. 貓鼬找到$數組中
- 28. 如何在數組中找到最大和最小數字c
- 29. 如何在verilog數組中找到最大數量
- 30. 如何在數組C編程中找到某個數字?
循環遍歷數組,然後使用'instanceof Array'來檢查 –
然後使用'indexOf'! :) – MackieeE