在使用Javascript获取数据之前修改数据
在下面的场景中,我将返回一组时间,但希望重新格式化它们,然后减去它们以获得一个新的时间对象,并在返回之前将该对象推送到我的列表中 我在我的行动中尝试了以下几点,但没有成功。我需要遍历整个列表 Output.json在使用Javascript获取数据之前修改数据,javascript,Javascript,在下面的场景中,我将返回一组时间,但希望重新格式化它们,然后减去它们以获得一个新的时间对象,并在返回之前将该对象推送到我的列表中 我在我的行动中尝试了以下几点,但没有成功。我需要遍历整个列表 Output.json { "tatt": { "tmst": "2017-03-19T20:18:36", "errCd": "0", "errNm": null, "eta": [{ "prdt": "20
{
"tatt": {
"tmst": "2017-03-19T20:18:36",
"errCd": "0",
"errNm": null,
"eta": [{
"prdt": "2017-03-19T20:18:19",
"arrT": "2017-03-19T20:24:19",
}, {
"prdt": "2017-03-19T20:18:06",
"arrT": "2017-03-19T20:25:06",
}, {
"prdt": "2017-03-19T20:17:54",
"arrT": "2017-03-19T20:28:54",
}]
}
}
action.js
import axios from "axios";
function transformDateFormat(json) {
const arrival = {
...json,
date: json.data.ctatt.eta[0].arrT.substring(json.data.ctatt.eta[0].arrT.indexOf("T") + 1)
}
console.log(arrival)
return arrival;
}
export const fetchTime = () => {
return function(dispatch, getState) {
axios.get('/data/output.json')
.then(transformDateFormat)
.then((response) => {
dispatch({type: "FETCH_FULFILLED", payload: response.data.ctatt.eta})
})
.catch((err) => {
dispatch({type: "FETCH_REJECTED", payload: err})
})
}
}
创造新时代的逻辑
var date1 = "2017-03-18T21:28:53";
var date2 = "2017-03-18T21:27:53";
date1 = date1.substring(date1.indexOf("T") + 1);
date2 = date2.substring(date2.indexOf("T") + 1);
function parseTime(s) {
var c = s.split(':');
return parseInt(c[0]) * 60 + parseInt(c[1]);
}
var minutes = parseTime(date1) - parseTime(date2);
console.log(minutes + " min")
更新:
所以我能够解决这个问题,但只有在它通过我的组件返回并且我在那里进行操作之后。不确定这是否是正确的方法…任何见解都会有所帮助 你的减速器不是一个真正的减速器,它是一个动作。在real reducer.doh中执行转换逻辑,正确。对不起,这是漫长的一天