【问题标题】:How do I subset a 2-dimensional array in Javascript?如何在 Javascript 中对二维数组进行子集化?
【发布时间】:2013-06-29 13:39:36
【问题描述】:

我一直在环顾四周,发现可以使用myArray[x][y] 之类的东西从二维数组中检索元素。但是,除了第一列之外,我想要做的一切。

在 R 中只使用 myArray[x,2:y] 但我知道冒号在 Javascript 中是完全不同的运算符。

谢谢

【问题讨论】:

  • 你总是可以从第一列偏移,为什么不行?
  • @epoch 你将如何从第一列偏移?假设你有一个myArray = [[1,2,3],[4,5,6],[7,8,9]] 形式的数组

标签: javascript arrays multidimensional-array


【解决方案1】:

您有 myArray = [[1,2,3],[4,5,6],[7,8,9]] 并想检索 [[2,3],[5,6] 的示例],[8,9]]

你可以这样做:

var myArray = [[1,2,3],[4,5,6],[7,8,9]];    
var results = [];

for(var i = 0; i < myArray.length; i++){
  results.push(myArray[i].slice(1,3));
}
//results === [[2,3],[5,6],[8,9]];

如果您想从每个子数组中对 index[0] 之后的索引进行切片,那么您可能希望改用这种方法:

var myArray = [[1,2,3],[4,5,6],[7,8,9]];    

var sliceSubset = function(array){
  var results = [];
  for(var i = 0; i < array.length; i++){
    results.push(array[i].slice(1,array[i].length));
  }
  return results;
}

sliceSubset(myArray); //returns [[2,3],[5,6],[8,9]]
//works on different sized arrays as well
var myOtherArray = [[1,2,3,9],[4,5,6],[7,8,9]];
sliceSubset(myOtherArray); //returns [[2,3,9],[5,6],[8,9]]

【讨论】:

    【解决方案2】:

    如果您想在y 中获取所有内容,请尝试map

    var y = myArray.map(function(v){ return v[1] });
    

    不确定这是否与您发布的 R 等效...

    如果你想减去第一列试试:

    return v.slice(1);
    

    【讨论】:

    • 据我了解,返回每个原始数组的第一个元素的数组。
    • 嗯,我不确定我是否理解你的问题,但如果你有a = [[1,2],[1,2],[1,2]],它将返回[2,2,2]
    • 啊,是的,你是对的,我已经习惯了 1-indexed 语言。但是,这仍然不能解决我的问题,比如我有 myArray = [[1,2,3],[4,5,6],[7,8,9]] 并想检索 [[2,3],[5,6],[8,9]]
    • 然后你可以返回那些列:return [v[1],v[2]]
    • 好吧,我想我只需要这样做,我希望有一个更清洁的方法,因为我正在处理一个稍微大一点的数组。
    猜你喜欢
    • 2015-09-04
    • 2023-02-08
    • 1970-01-01
    • 2023-01-11
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    相关资源
    最近更新 更多