如何从二维数组而不是单个条目中检索列?我这样做是因为我只想在其中一个列中搜索一个字符串,所以如果有另一种方法可以实现这一点,请告诉我.
我正在使用这种方式定义的数组:
var array=[];
Run Code Online (Sandbox Code Playgroud)
最后,这个数组的大小是20(col)x3(行),我需要读取第一行并检查其中是否存在某些短语.
Lei*_*sen 110
使用地图功能可以轻松获取列.
// a two-dimensional array
var two_d = [[1,2,3],[4,5,6],[7,8,9]];
// take the third column
var col3 = two_d.map(function(value,index) { return value[2]; });
Run Code Online (Sandbox Code Playgroud)
为什么要烦恼呢?只需过滤矩阵即可找到感兴趣的行.
var interesting = two_d.filter(function(value,index) {return value[1]==5;});
// interesting is now [[4,5,6]]
Run Code Online (Sandbox Code Playgroud)
遗憾的是,过滤器和地图在IE9及更低版本上不是原生的.MDN文档为没有本机支持的浏览器提供了实现.
Mic*_*ski 31
使用Array.prototype.map()
带箭头的功能:
const arrayColumn = (arr, n) => arr.map(x => x[n]);
const twoDimensionalArray = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
];
console.log(arrayColumn(twoDimensionalArray, 0));
Run Code Online (Sandbox Code Playgroud)
注意:Array.prototype.map()
箭头函数是ECMAScript 6的一部分,并且在任何地方都不受支持,请参阅ECMAScript 6兼容性表.
Rob*_*b W 22
你必须循环遍历2d数组中的每个元素,并获得第n列.
function getCol(matrix, col){
var column = [];
for(var i=0; i<matrix.length; i++){
column.push(matrix[i][col]);
}
return column;
}
var array = [new Array(20), new Array(20), new Array(20)]; //..your 3x20 array
getCol(array, 0); //Get first column
Run Code Online (Sandbox Code Playgroud)
Gra*_*ler 13
您可以使用以下数组方法从二维数组中获取列:
const array_column = (array, column) => array.map(e => e[column]);
Run Code Online (Sandbox Code Playgroud)
const array_column = (array, column) => array.reduce((a, c) => {
a.push(c[column]);
return a;
}, []);
Run Code Online (Sandbox Code Playgroud)
const array_column = (array, column) => {
const result = [];
array.forEach(e => {
result.push(e[column]);
});
return result;
};
Run Code Online (Sandbox Code Playgroud)
如果您的二维数组是正方形(每行的列数相同),则可以使用以下方法:
const array_column = (array, column) => array.flat().filter((e, i) => i % array.length === column);
Run Code Online (Sandbox Code Playgroud)
Yur*_*ich 10
var data = [
["a1", "a2", "a3"],
["b1", "b2", "b3"],
["c1", "c2", "c3"]
];
var col0 = data.map(d => d[0]); // [ 'a1', 'b1', 'c1' ]
var col1 = data.map(d => d[1]); // [ 'a2', 'b2', 'c2' ]
Run Code Online (Sandbox Code Playgroud)
小智 10
JavaScript 中的 ES6 版本:
使用对象键:
var haystack = [
{a:1, b:2},
{a:3, b:4},
{a:5, b:6}
];
var b_col = haystack.map(x => x.b); // [2,4,6]
Run Code Online (Sandbox Code Playgroud)
使用嵌套数组索引:
var haystack2 = [
[1,2,3,4,5],
[5,4,3,2,1],
[9,8,7,6,5],
[5,6,7,8,9]
];
var col_2 = haystack.map(x => x[2]); // [3,3,7,7]
Run Code Online (Sandbox Code Playgroud)
@Pylon的答案也是将其添加到数组原型的好方法。
小智 5
function arrayColumn(arr, n) {
return arr.map(x=> x[n]);
}
var twoDimensionalArray = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
console.log(arrayColumn(twoDimensionalArray, 1));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
103951 次 |
最近记录: |