Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果条件满足,则将值从一个数组复制到另一个数组_Javascript_Arrays - Fatal编程技术网

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

Javascript 如果条件满足,则将值从一个数组复制到另一个数组,javascript,arrays,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)=

我有一个矩阵,大小不一。但现在,让我们假设它是一个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;
var-half_-MW=…(上面显示的值)
var数据=[];
对于(i=0;i<6;++i){
var dataCols=[];
对于(j=0;j<6;++j){
如果(半兆瓦[i][j]!=0){
dataCols[i]=半兆瓦[i];
dataCols[j]=半兆瓦[j];
}     
}
数据[i]=数据列;

我得到的结果是,数据/值被复制,但有些索引包含0,这是我不想要的。因此,实际上,
数据
数组不应该是6x6数组,它应该更小,因为从
半MW
数组中包含0的那些索引应该被忽略。

我将使用
映射
来循环所有数组然后在过滤出条件后返回它们

在这种情况下,如果不是pliss注释,您似乎希望删除所有
0
s,以便我可以编辑

希望这有帮助:>

var-half_-MW=[[0,1,1,0,0,0,0]、[1,1,0,0,0,0,0]、[0,0,0,1,1]、[0,0,0,1,0,1]、[0,0,0,0,1,1,0];
var数据=半兆瓦地图(m=>{
返回m.filter(c=>c!=0)
})

console.log(data)
我将使用
映射来循环所有数组,并在您
筛选出条件后返回它们

在这种情况下,如果不是pliss注释,您似乎希望删除所有
0
s,以便我可以编辑

希望这有帮助:>

var-half_-MW=[[0,1,1,0,0,0,0]、[1,1,0,0,0,0,0]、[0,0,0,1,1]、[0,0,0,1,0,1]、[0,0,0,0,1,1,0];
var数据=半兆瓦地图(m=>{
返回m.filter(c=>c!=0)
})

console.log(data)
您的代码无法工作,因为您在内部循环中缺少了
dataCols.push(半个MW[i][j]);
。更改该选项,它将工作:

var半瓦=[
[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数据=[];
对于(i=0;i<0.5兆瓦长度;++i){
var dataCols=[];
对于(j=0;jconsole.log(data);
您的代码无法工作,因为您在内部循环中缺少
dataCols.push(半个[i][j]);
。更改该选项,它将工作:

var半瓦=[
[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数据=[];
对于(i=0;i<0.5兆瓦长度;++i){
var dataCols=[];
对于(j=0;jlog(数据);
您可以使用
布尔值作为回调映射筛选

var half_MW=[[0,0,0,0,0,0,0],[1,0,1,0,0,0],[1,1,0,0,0,0,0],[0,0,0,0,1,1],[0,0,0,0,1,1,0], 结果=半兆瓦 .map(a=>a.filter(布尔)) .过滤器(a=>a.长度); console.log(结果);

.as console wrapper{max height:100%!important;top:0;}
您可以使用
布尔值作为回调映射筛选

var half_MW=[[0,0,0,0,0,0,0],[1,0,1,0,0,0],[1,1,0,0,0,0,0],[0,0,0,0,1,1],[0,0,0,0,1,1,0], 结果=半兆瓦 .map(a=>a.filter(布尔)) .过滤器(a=>a.长度); console.log(结果);

.as控制台包装{最大高度:100%!重要;顶部:0;}
请同时添加想要的结果。因此,您想要过滤掉
0
s?请同时添加想要的结果。因此,您想要过滤掉
0
s?@Rajesh OP也没有提到内部数组应该具有相同的长度,因此需要考虑的是从OP的code@RajeshOP也没有我注意到内部数组应该具有相同的长度,所以需要考虑的是从OP的代码中获取错误。不确定,但是,每个OP的语句只复制来自…的值,可能,
.filter(x=>x.filter(Boolean))
更合适。不,我的意思是
half\MW.filter(a=>a.filter(Boolean.length>0)
不确定,但是,根据OP的语句,仅复制…中的值可能,
.filter(x=>x.filter(Boolean))
更合适。不,不,我的意思是
half_MW.filter(a=>a.filter(Boolean.length>0);