0

我想用这个数组对象按日期过滤

const mapDateRange = () => {for (let elem in catchData) {  
   let x = {startDate:catchData[elem][0],finishDate:catchData[elem][1]};
  return x;
}};

但它只捕获一个数组对象

这是已处理的最新数据

const data = {
  ["01-08-2019", "08-08-2019"],
  ["08-08-2019", "15-08-2019"],
  ["15-08-2019", "22-08-2019"],
  ["22-08-2019", "29-08-2019"]
};

这是我所期望的

const data = [
  {
    startDate:"01-08-2019", finisDate:"08-08-2019"
  },
  {
    startDate:"08-08-2019", finisDate:"15-08-2019"
  },
  {
    startDate:"15-08-2019", finisDate:"22-08-2019"
  },
  {
    startDate:"22-08-2019", finisDate:"29-08-2019"
  }
];
4

4 回答 4

0

尝试.map使用 ES6 语法进行数组解构

data.map(([ startDate, finishDate ]) => { startDate, finisDate })
于 2019-08-22T11:18:18.253 回答
0

这样,您将通过使用地图功能获得您想要的结果

    data = data.map((obj) => {
    return {
        startDate: obj[0],
        finishDate: obj[1]
    }
});

console.log(data)
于 2019-08-22T04:51:35.743 回答
0

所以你写的代码有几个问题:

  1. data开始是一个对象({}),但它是作为一个数组构建的,所以我更正了。
  2. 您的函数mapDateRange使用catchData但它在任何地方都不存在,所以我创建了函数,除了一个参数,它将是catchData.
  3. 最重要的是:您返回x的只是数据数组中的一项。所以我创建了一个空数组并将x值推送到数组中。

const data = [
  ["01-08-2019", "08-08-2019"],
  ["08-08-2019", "15-08-2019"],
  ["15-08-2019", "22-08-2019"],
  ["22-08-2019", "29-08-2019"]
];

const mapDateRange = (catchData) => {
  let new_data = [];
  for (let elem in catchData) {
    let x = {
      startDate: catchData[elem][0],
      finishDate: catchData[elem][1]
    };
    new_data.push(x);
  }
  return new_data;
};

console.log(mapDateRange(data));

于 2019-08-22T04:25:55.827 回答
0
const data = [
  ["01-08-2019", "08-08-2019"],
  ["08-08-2019", "15-08-2019"],
  ["15-08-2019", "22-08-2019"],
  ["22-08-2019", "29-08-2019"]
];

const mapDataRange = (data) => {
  const result = [];
  data.forEach((item) => {
    const x = { 'startDate': item[0], 'finishDate': item[1] };
    result.push(x);
  });

  return result;
}
console.log(mapDatatRange(data));
于 2019-08-22T04:26:03.090 回答