javascript - 如果条件满足,将值从一个数组复制到另一个数组

标签 javascript arrays

我有一个矩阵,它的大小可以变化。但现在,假设它是一个 6X6 矩阵。它包含所有索引上的值,其中一些值可以为 0。

假设矩阵看起来像这样:

var half_MW = [
    [0,1,1,0,0,0],
    [1,0,1,0,0,0],
    [1,1,0,0,0,0],
    [0,0,0,0,1,1],
    [0,0,0,1,0,1],
    [0,0,0,1,1,0]]

现在我想创建另一个数组(我们称它为 data),并仅复制 half_MW 中不包含 0 的值(即 (0,0 ) = 0,还有 (0,3) = 0 等。

我不确定的是如何创建我称之为 data 的数组。

这是我的尝试

  var half_MW = ... (values shown above)
  var data = [];

  for(i = 0; i < 6; ++i) {
    var dataCols = [];
    for(j = 0; j < 6; ++j) {
      if(half_MW[i][j] != 0) {
        dataCols[i] = half_MW[i];
        dataCols[j] = half_MW[j];
      }     
    }

    data[i] = dataCols;

我得到的结果是数据/值被复制,但一些索引包含 0,这是我不想要的。所以实际上,data 数组不应该是 6x6 数组,它应该更小,因为 half_MW 数组中包含 0 的那些索引应该被排除。

最佳答案

您的代码不起作用,因为您在内循环中缺少 dataCols.push(half_MW[i][j]);。改变它,它就起作用了:

var half_MW = [
    [0,1,1,0,0,0],
    [1,0,1,0,0,0],
    [1,1,0,0,0,0],
    [0,0,0,0,1,1],
    [0,0,0,1,0,1],
    [0,0,0,1,1,0]];
var data = [];

for(i = 0; i < half_MW.length; ++i) {
  var dataCols = [];
  for(j = 0; j < half_MW[0].length; ++j) {
    if(half_MW[i][j] != 0) {
      dataCols.push(half_MW[i][j]);
    }     
  }
  data[i] = dataCols;
}
console.log(data);

您还可以通过将 half_MW.length 用于外循环和将 half_MW[0].length 用于内循环来使循环条件更加动态。

关于javascript - 如果条件满足,将值从一个数组复制到另一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50798060/

相关文章:

java - 如何测试数组是否包含一对乘积为偶数的数字?

c++ - std::string 与字节缓冲区(c++ 中的区别)

arrays - 如何根据相邻元素的条件将数组拆分为有限数量的分区

c++为什么这个循环有缺陷以将数据读入结构数组?

javascript - 如何更新 JavaScript Assets 映射以返回动态字段?

javascript - 将搜索栏放在前景中,在动画标题上方

javascript 测试函数总是返回 false

javascript - 前导零是什么意思?

javascript - CKEditor - 启动后启用 Scayt?

javascript - JS 在原型(prototype)中使用原型(prototype)函数