gpt4 book ai didi

javascript - 在二维数组中搜索并将数组列表作为数组返回

转载 作者:行者123 更新时间:2023-11-30 18:55:22 29 4
gpt4 key购买 nike

如何在二维数组中搜索并将数组列表作为数组返回?

var dataSet = new Array(new Array());
function searchAsset(){
dataSet.length = 0;
var fileName = document.getElementById("fileName").value;
var arr = new Array(["view_page.psd","test"],["ok_test.jpg","yes","kk"],["new_banner_2009.fla","good"],["gps-new-web.html","hot"]);
var re = new RegExp(fileName ,'i');
var res = null;
for(var i = 0;i<arr.length;i++){
var newArr = arr[i][0];
//alert(newArr+":"+newArr.match(re));
var res = newArr.match(re);
if(res != null){
dataSet.push("["+arr[i]+"]");
}
}
alert("Final --- "+dataSet);
for(var m = 0;m<dataSet.length;m++){
alert(dataSet[m]);
}
}

最佳答案

这个:

var dataSet = new Array(new Array());

...不是二维数组。它产生一个具有(最初)一个元素的数组,它是对另一个具有(最初)零元素的数组的引用。在 JavaScript 中最接近二维数组的是数组的数组,例如:

function create2DArray(rows, columns) {
var outer, index;

outer = new Array(rows);
for (index = 0; index < rows; ++index) {
outer[index] = new Array(columns);
}

return outer;
}

搜索这样的东西很容易:

function find(thing, theArray) {
var results, col, row, subArray;

results = []; // Empty array
for (row = 0; row < theArray.length; ++row) {
subArray = theArray[row];
for (col = 0; col < subArray.length; ++col) {
value = subArray[col];
if (value == thing) { // or whatever your criterion
results.push({row: row, col: col});
}
}
}

return results;
}

这会创建一个对象数组,每个对象都有一个 colrow 属性,告诉您 thing 中的位置theArraytheArray[row][col] == thing

请注意,我不是在循环中每次都执行 theArray[row][col],而是为每一行获取子数组引用 一次。另请注意,由于理论上子数组的长度可能不同,因此我不假设它们都具有相同的长度。

我建议阅读 JavaScript 的数组,它与传统数组有很大不同。它们实际上是字典、关联 数组,而不是由偏移量索引的连续内存块。当您执行 theArray[5] 时,您正在查找数组中名为“5”的属性,其方式与您说 theObject[' frog'] 您正在查找对象的属性“frog”。 (并不是说实现不能优化它,而是由于 JavaScript 数组是稀疏的,因此在这样做时必须小心。)

关于javascript - 在二维数组中搜索并将数组列表作为数组返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2294563/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com