Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.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_Node.js - Fatal编程技术网

Javascript会删除数组中的每一个其他数组

Javascript会删除数组中的每一个其他数组,javascript,arrays,node.js,Javascript,Arrays,Node.js,我有一个数组,其中我试图摆脱三月和九月。我一直在尝试下面的代码,但没有得到任何输出。请说明我缺少什么,以及如何改进 //w is the data array for(var i = 0; i < w.length; i+=1) w.splice(i, 1); data: [ [ '1983-03-31', 29.4, 29.6, 29.25, 29.29], [ '1983-06-30', 31.25, 31.4, 31.25, 31.38],

我有一个数组,其中我试图摆脱三月和九月。我一直在尝试下面的代码,但没有得到任何输出。请说明我缺少什么,以及如何改进

//w is the data array    
for(var i = 0; i < w.length; i+=1)
       w.splice(i, 1);

 data: 
   [ [ '1983-03-31', 29.4, 29.6, 29.25, 29.29],
     [ '1983-06-30', 31.25, 31.4, 31.25, 31.38],
     [ '1983-09-30', 30.53, 30.55, 30.2, 30.36],
     [ '1983-12-31', 29.66, 29.8, 29.36, 29.6],
     [ '1984-03-31', 30.83, 30.85, 30.74, 30.85]]
//w是数据数组
对于(变量i=0;i
您可以使用功能
过滤器

var数据=['1983-03-31',29.4,29.6,29.25,29.29],'1983-06-30',31.25,31.4,31.25,31.38],'1983-09-30',30.53,30.55,30.2,30.36],'1983-12-31',29.66,29.8,29.36,29.6],'1984-03-31',30.83,30.85,30.74,30.85];
var结果=数据。过滤器(([date])=>{
var[_,月]=日期分割('-');
返回月份!='09'和月份!='03';
});
控制台日志(结果)

.as console wrapper{max height:100%!important;top:0;}
我同意Ele的回答,即过滤是实现这一点的方法,这里有一个替代方法:如果您已经知道数组总是在三月、六月、九月、十二月等时间出现。,然后可以使用数组中元素的索引来确定是否要保留该元素。这回答了“删除所有其他元素”的问题,而不是问题主体“删除三月和九月”的要求

var数据=['1983-03-31',29.4,29.6,29.25,29.29],'1983-06-30',31.25,31.4,31.25,31.38],'1983-09-30',30.53,30.55,30.2,30.36],'1983-12-31',29.66,29.8,29.36,29.6],'1984-03-31',30.83,30.85,30.74,30.85];
var结果=数据.过滤器((u,i)=>{
返回i%2==1;
});

控制台日志(结果)
您还可以使用
.filter()
.every()
.includes()

让monthsToFilter=['03','09'];
让数据=[
['1983-03-31', 29.4, 29.6, 29.25, 29.29],
['1983-06-30', 31.25, 31.4, 31.25, 31.38],
['1983-09-30', 30.53, 30.55, 30.2, 30.36],
['1983-12-31', 29.66, 29.8, 29.36, 29.6],
['1984-03-31', 30.83, 30.85, 30.74, 30.85]
];
让结果=数据。过滤器(([date])=>{
返回monthsToFilter.every(m=>!date.includes('-'+m+'-');
});
控制台日志(结果)

。作为控制台包装{max height:100%!important;top:0;}
请在操作开始之前添加有关数据的更多详细信息。您尝试了吗?@smack89是的,但我不想分析该日期。@Ele谢谢!当我使用你的过滤器时,我得到一个错误,“w.filter不是一个函数”。我有一个执行JSON.parse的变量w,我在您的示例中使用它。@PopyAziz您确定w是数组吗?你能打印出来确定吗?@Ele是的。我做了console.log(w),这是输出:数据:[[Array],[Array],[Array],[Array],[Array],[Array]