Фильтрация массива с данными
let arrDate = ['06-13', '06-17'];
let arr = [
['06-10', 321, 45600, 0.7039473684210527, 34567, 45600, 23, 45600, 0.5, 4234, 4234, 4311, 3245, 422, 23, 34532, 77685, 4234, 4234, 4311, 3245, 422, 23],
['06-11', 876, 43500, 2.013793103448276, 55435, 43500, 12, 43500, 0.4, 4345, 4553, 431, 5678, 44, 42, 13467, 53256, 4345, 4553, 431, 5678, 44, 42],
['06-12', 234, 55600, 0.420863309352518, 54352, 55600, 43, 55600, 0.3, 3642, 3642, 443, 433, 224, 55, 14134, 52466, 3642, 3642, 443, 433, 224, 55],
['06-13', 345, 24300, 1.4197530864197532, 32454, 24300, 23, 24300, 0.4, 5232, 55, 6644, 555, 323, 64, 14141, 35243, 5232, 55, 6644, 555, 323, 64],
['06-14', 321, 45600, 0.7039473684210527, 56463, 45600, 23, 45600, 0.67, 6363, 3523, 3422, 244, 133, 532, 32532, 46357, 6363, 3523, 3422, 244, 133, 532],
['06-15', 876, 43500, 2.013793103448276, 77532, 43500, 12, 43500, 0.96, 5425, 5532, 4266, 345, 145, 42, 35253, 76544, 5425, 5532, 4266, 345, 145, 42],
['06-16', 234, 55600, 0.420863309352518, 54352, 55600, 3, 55600, 0.56, 6452, 555, 785, 422, 423, 53, 52352, 64865, 6452, 555, 785, 422, 423, 53],
['06-17', 345, 24300, 1.4197530864197532, 21453, 24300, 54, 24300, 0.45, 5425, 1344, 3344, 332, 144, 23, 14134, 56436, 5425, 1344, 3344, 332, 144, 23],
['06-18', 345, 24300, 1.4197530864197532, 32454, 24300, 23, 24300, 0.4, 5232, 55, 6644, 555, 323, 64, 14141, 35243, 5232, 55, 6644, 555, 323, 64],
['06-19', 321, 45600, 0.7039473684210527, 56463, 45600, 23, 45600, 0.67, 6363, 3523, 3422, 244, 133, 532, 32532, 46357, 6363, 3523, 3422, 244, 133, 532],
['06-20', 876, 43500, 2.013793103448276, 77532, 43500, 12, 43500, 0.96, 5425, 5532, 4266, 345, 145, 42, 35253, 76544, 5425, 5532, 4266, 345, 145, 42],
['06-21', 234, 55600, 0.420863309352518, 54352, 55600, 3, 55600, 0.56, 6452, 555, 785, 422, 423, 53, 52352, 64865, 6452, 555, 785, 422, 423, 53],
['06-22', 345, 24300, 1.4197530864197532, 21453, 24300, 54, 24300, 0.45, 5425, 1344, 3344, 332, 144, 23, 14134, 56436, 5425, 1344, 3344, 332, 144, 23]
];
arr.filter((item) => {
if (item[0] !== arrDate[0]) {
arr.shift()
}
})
console.log(arr)
Вот у меня есть такие 2 массива:
arrDateэто массив с датамиотидоarrэто массив с данными, где первый элемент это дата
Необходимо из второго массива сделать выборку по датам от и до
И пишу такой код что, если у меня не совпадает дата от и дата из данных, то я удаляю первый массив, то есть который идет до совпадения с числом
Но вот отрабатывает он неправильно, выводит совсем не то что надо:
['06-17', 345, 24300, 1.4197530864197532, 21453, 24300, 54, 24300, 0.45, 5425, 1344, 3344, 332, 144, 23, 14134, 56436, 5425, 1344, 3344, 332, 144, 23],
['06-18', 345, 24300, 1.4197530864197532, 32454, 24300, 23, 24300, 0.4, 5232, 55, 6644, 555, 323, 64, 14141, 35243, 5232, 55, 6644, 555, 323, 64],
['06-19', 321, 45600, 0.7039473684210527, 56463, 45600, 23, 45600, 0.67, 6363, 3523, 3422, 244, 133, 532, 32532, 46357, 6363, 3523, 3422, 244, 133, 532],
['06-20', 876, 43500, 2.013793103448276, 77532, 43500, 12, 43500, 0.96, 5425, 5532, 4266, 345, 145, 42, 35253, 76544, 5425, 5532, 4266, 345, 145, 42],
['06-21', 234, 55600, 0.420863309352518, 54352, 55600, 3, 55600, 0.56, 6452, 555, 785, 422, 423, 53, 52352, 64865, 6452, 555, 785, 422, 423, 53],
['06-22', 345, 24300, 1.4197530864197532, 21453, 24300, 54, 24300, 0.45, 5425, 1344, 3344, 332, 144, 23, 14134, 56436, 5425, 1344, 3344, 332, 144, 23]
Ожидаемый результат:
['06-13', 345, 24300, 1.4197530864197532, 32454, 24300, 23, 24300, 0.4, 5232, 55, 6644, 555, 323, 64, 14141, 35243, 5232, 55, 6644, 555, 323, 64],
['06-14', 321, 45600, 0.7039473684210527, 56463, 45600, 23, 45600, 0.67, 6363, 3523, 3422, 244, 133, 532, 32532, 46357, 6363, 3523, 3422, 244, 133, 532],
['06-15', 876, 43500, 2.013793103448276, 77532, 43500, 12, 43500, 0.96, 5425, 5532, 4266, 345, 145, 42, 35253, 76544, 5425, 5532, 4266, 345, 145, 42],
['06-16', 234, 55600, 0.420863309352518, 54352, 55600, 3, 55600, 0.56, 6452, 555, 785, 422, 423, 53, 52352, 64865, 6452, 555, 785, 422, 423, 53],
['06-17', 345, 24300, 1.4197530864197532, 21453, 24300, 54, 24300, 0.45, 5425, 1344, 3344, 332, 144, 23, 14134, 56436, 5425, 1344, 3344, 332, 144, 23],
Ответы (1 шт):
Фильтр в данном случае не очень удобное решение, тем более модификации массива делать в нем не стоит - для этого есть reduce. Все что нужно сделать в данном случае так как массив упорядочен, найти начало и конец выборки, это делается через findIndex метод массива возвращающий индекс элемента совпадающего с условием. После чего методом slice мы можем безболезненно вырезать нашу выборку в новый массив.
let arrDate = ['06-13', '06-17'];
let arr = [
['06-10', 321, 45600, 0.7039473684210527, 34567, 45600, 23, 45600, 0.5, 4234, 4234, 4311, 3245, 422, 23, 34532, 77685, 4234, 4234, 4311, 3245, 422, 23],
['06-11', 876, 43500, 2.013793103448276, 55435, 43500, 12, 43500, 0.4, 4345, 4553, 431, 5678, 44, 42, 13467, 53256, 4345, 4553, 431, 5678, 44, 42],
['06-12', 234, 55600, 0.420863309352518, 54352, 55600, 43, 55600, 0.3, 3642, 3642, 443, 433, 224, 55, 14134, 52466, 3642, 3642, 443, 433, 224, 55],
['06-13', 345, 24300, 1.4197530864197532, 32454, 24300, 23, 24300, 0.4, 5232, 55, 6644, 555, 323, 64, 14141, 35243, 5232, 55, 6644, 555, 323, 64],
['06-14', 321, 45600, 0.7039473684210527, 56463, 45600, 23, 45600, 0.67, 6363, 3523, 3422, 244, 133, 532, 32532, 46357, 6363, 3523, 3422, 244, 133, 532],
['06-15', 876, 43500, 2.013793103448276, 77532, 43500, 12, 43500, 0.96, 5425, 5532, 4266, 345, 145, 42, 35253, 76544, 5425, 5532, 4266, 345, 145, 42],
['06-16', 234, 55600, 0.420863309352518, 54352, 55600, 3, 55600, 0.56, 6452, 555, 785, 422, 423, 53, 52352, 64865, 6452, 555, 785, 422, 423, 53],
['06-17', 345, 24300, 1.4197530864197532, 21453, 24300, 54, 24300, 0.45, 5425, 1344, 3344, 332, 144, 23, 14134, 56436, 5425, 1344, 3344, 332, 144, 23],
['06-18', 345, 24300, 1.4197530864197532, 32454, 24300, 23, 24300, 0.4, 5232, 55, 6644, 555, 323, 64, 14141, 35243, 5232, 55, 6644, 555, 323, 64],
['06-19', 321, 45600, 0.7039473684210527, 56463, 45600, 23, 45600, 0.67, 6363, 3523, 3422, 244, 133, 532, 32532, 46357, 6363, 3523, 3422, 244, 133, 532],
['06-20', 876, 43500, 2.013793103448276, 77532, 43500, 12, 43500, 0.96, 5425, 5532, 4266, 345, 145, 42, 35253, 76544, 5425, 5532, 4266, 345, 145, 42],
['06-21', 234, 55600, 0.420863309352518, 54352, 55600, 3, 55600, 0.56, 6452, 555, 785, 422, 423, 53, 52352, 64865, 6452, 555, 785, 422, 423, 53],
['06-22', 345, 24300, 1.4197530864197532, 21453, 24300, 54, 24300, 0.45, 5425, 1344, 3344, 332, 144, 23, 14134, 56436, 5425, 1344, 3344, 332, 144, 23]
];
const start = arr.findIndex(e => e[0] === arrDate[0])
const end = arr.findIndex(e => e[0] === arrDate[1])
const result = arr.slice(start, end + 1)
console.log(result)
выведет:
['06-13', 345, 24300, 1.4197530864197532, 32454, 24300, 23, 24300, 0.4, 5232, 55, 6644, 555, 323, 64, 14141, 35243, 5232, 55, 6644, 555, 323, 64],
['06-14', 321, 45600, 0.7039473684210527, 56463, 45600, 23, 45600, 0.67, 6363, 3523, 3422, 244, 133, 532, 32532, 46357, 6363, 3523, 3422, 244, 133, 532],
['06-15', 876, 43500, 2.013793103448276, 77532, 43500, 12, 43500, 0.96, 5425, 5532, 4266, 345, 145, 42, 35253, 76544, 5425, 5532, 4266, 345, 145, 42],
['06-16', 234, 55600, 0.420863309352518, 54352, 55600, 3, 55600, 0.56, 6452, 555, 785, 422, 423, 53, 52352, 64865, 6452, 555, 785, 422, 423, 53],
['06-17', 345, 24300, 1.4197530864197532, 21453, 24300, 54, 24300, 0.45, 5425, 1344, 3344, 332, 144, 23, 14134, 56436, 5425, 1344, 3344, 332, 144, 23],