Javascript 返回数据而不首先在函数外部声明数组
我有一个函数,返回基于所选日期的格式化图表数据,如下所示,所有工作正常等:Javascript 返回数据而不首先在函数外部声明数组,javascript,Javascript,我有一个函数,返回基于所选日期的格式化图表数据,如下所示,所有工作正常等: const formatChartData = (data,myDate,myHour, myUnit, chartData) => { data.filter( addTakeDay > 0 ? (item) => item[myDate].substring(0,10) === selectedDate : addTakeDay === 0
const formatChartData = (data,myDate,myHour, myUnit, chartData) => {
data.filter(
addTakeDay > 0
? (item) => item[myDate].substring(0,10) === selectedDate
: addTakeDay === 0
? (item) => item[myDate].substring(0,10) >= monday
: (item) => item[myDate].substring(0,10) >= previousMonday && item[myDate].substring(0,10) < monday
).map((item) => {
return {x: String(addTakeDay > 0
? (item[myHour].substring(11,13) < 10
? item[myHour].substring(12,13)
: item[myHour].substring(11,13))
: moment(item[myDate].substring(0,10),"YYYY-MM-DD").format("ddd")) ,y: item[myUnit]}
}).reduce((res, value) => {
if (!res[value.x]) {
res[value.x] = { x: String(value.x), y: 0 };
chartData.push(res[value.x])
}
res[value.x].y += value.y;
return res;
}, {});
}
let myChartData = [];
formatChartData(dropIn,"ShiftDate","Hour","Units", myChartData)
const formatChartData=(数据,myDate,myHour,myUnit,chartData)=>{
数据过滤器(
addTakeDay>0
?(项目)=>项目[myDate]。子字符串(0,10)==selectedDate
:addTakeDay==0
?(项目)=>项目[myDate]。子字符串(0,10)>=星期一
:(项目)=>项目[myDate]。子字符串(0,10)>=上一个星期一和项目[myDate]。子字符串(0,10)<星期一
).map((项目)=>{
返回{x:String(addTakeDay>0
?(项目[myHour]。子串(11,13)<10
?项目[myHour]。子字符串(12,13)
:项目[myHour]。子字符串(11,13))
:力矩(项目[myDate]。子字符串(0,10),“YYYY-MM-DD”)。格式(“ddd”)),y:item[myUnit]}
}).reduce((res,value)=>{
如果(!res[value.x]){
res[value.x]={x:String(value.x),y:0};
chartData.push(res[value.x])
}
res[value.x].y+=value.y;
返回res;
}, {});
}
让myChartData=[];
formatChartData(下拉列表、“移位日期”、“小时”、“单位”、myChartData)
我的问题是,有没有一种方法可以在不首先将变量声明为函数外部的空数组的情况下执行此操作。功能不能完成所有工作吗?它不是主要的,我只是想知道:)如果你没有在其他地方使用图表数据,只需传递一个空数组。您不需要添加对它的引用
formatChartData(dropIn,"ShiftDate","Hour","Units", [])
这很简单
您需要函数返回值
看这个
const formatChartData=(数据,我的日期,我的小时,我的单位)=>{
常量图表数据=[];
数据过滤器(
addTakeDay>0
?(项目)=>项目[myDate]。子字符串(0,10)==selectedDate
:addTakeDay==0
?(项目)=>项目[myDate]。子字符串(0,10)>=星期一
:(项目)=>项目[myDate]。子字符串(0,10)>=上一个星期一和项目[myDate]。子字符串(0,10)<星期一
).map((项目)=>{
返回{x:String(addTakeDay>0
?(项目[myHour]。子串(11,13)<10
?项目[myHour]。子字符串(12,13)
:项目[myHour]。子字符串(11,13))
:力矩(项目[myDate]。子字符串(0,10),“YYYY-MM-DD”)。格式(“ddd”)),y:item[myUnit]}
}).reduce((res,value)=>{
如果(!res[value.x]){
res[value.x]={x:String(value.x),y:0};
chartData.push(res[value.x])
}
res[value.x].y+=value.y;
返回res;
},
{});
返回图表数据;
}
让myChartData=formatChartData(下拉菜单,“移位日期”、“小时”、“单位”、myChartData);
const myChartData=[]
在函数的第一行?太棒了,谢谢!这是暗示我的返回值:)