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

时间:2018-03-03 23:58:09

标签: 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],
     [ '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]]

2 个答案:

答案 0 :(得分:0)

我同意Ele的回答filter是这样做的方式,而在另一方面:如果你已经知道阵列总是带有3月1日,6月,9月,12月等等然后,您可以使用数组内元素的索引来确定是否要保留元素。这回答了“删除所有其他元素”的问题,而不是“删除3月和9月”问题主体的要求。

var 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]];
     
var result = data.filter((_, i) => {
  return i % 2 == 1;
});

console.log(result);

答案 1 :(得分:0)

您也可以使用.filter().every().includes()

&#13;
&#13;
let monthsToFilter = ['03', '09'];
let 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]
];
     
let result = data.filter(([date]) => {
    return monthsToFilter.every(m => !date.includes('-' + m + '-'));
});

console.log(result);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
&#13;
&#13;

有用的资源: