我有一系列数组,我试图摆脱三月和九月。我一直在尝试下面的代码,但我没有得到任何输出。请提出我缺少的内容以及如何改进这一点。
//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]]
答案 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()
:
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;
有用的资源: