最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

将日期功能合二为一

IT培训 admin 3浏览 0评论

将日期功能合二为一

我正在为基于语音的应用程序的日期提取工作。我想知道如何查看日期,还可以在一个函数中添加用户要求更高日期的标记。现在我正在使用类似的功能,但如果有人可以指导我做一个,那就太好了。我的代码如下,

checkedDateFlag,checkedDate如何在一个中创建此函数,以便我可以获得正确的日期并获得标记(true)

Code

            let  ent  = [{
            entity:  'sys-number',
            location: [23, 25],
            value:  '12',
            confidence:  1,
            metadata: {
                numeric_value:  1
                }
            },
            {
                entity:  'sys-date',
                location: [23, 40],
                value:  '2017-02-16',
                confidence:  1,
                metadata: {
                calendar_type:  'GREGORIAN',
                timezone:  'GMT'
            }
            },
            {
                entity:  'sys-number',
                location: [36, 40],
                value:  '2018', 
                confidence:  1,
                metadata: {
                    numeric_value:  2018
                }
            },
            {
                entity:  'sys-date',
                location: [49, 52],
                value:  '2030-12-17',
                confidence:  1,
                metadata: {
                    calendar_type:  'GREGORIAN',
                    timezone:  'GMT'
                }
            }
            ];

            const  dateChecker  = (filteredDates, currentDate) => {
            // This function checking date higher than todays date and replace higher date with current date. 
            return  filteredDates.map(f  => {
                let  fd  =  new  Date(f);
                if(fd  >  currentDate) {
                    return  currentDate;
                } else {
                    return  fd;
                }
            })
            }

            const  dateCheckerFlag  = (filteredDates, currentDate) => {
                // This function return true if date is higher and I can check it later and create response saying you have provided higher date than today. I can only issue statement till today and then issue the statement 
                for (let  f  of  filteredDates) {
                    let  fd  =  new  Date(f);
                    if(fd  >  currentDate) {
                        return  true
                    } else {
                        return  false;
                    }
            }


            let  filteredDates  =  ent.filter(f  => {
                if (f.entity  ===  'sys-date') {
                    return  f.value
                }
            }).map(f  =>  f.value);

            let  checkedDateFlag  = helper.dateCheckerFlag(filteredDates, currentDate);
            let  checkedDate  =  helper.dateChecker(filteredDates, currentDate);
回答如下:

我建议不要将这两个功能结合起来。虽然他们似乎做同样的事情,但他们有完全不同的输出签名(布尔与数组)。

如果你认为他们有很多重复的代码。也许以下可能是一种方法。我将留下组合和单独的功能。但强烈推荐单独的一个。

 var  ent  = [{
        entity:  'sys-number',
        location: [23, 25],
        value:  '12',
        confidence:  1,
        metadata: {
            numeric_value:  1
            }
        },
        {
            entity:  'sys-date',
            location: [23, 40],
            value:  '2017-02-16',
            confidence:  1,
            metadata: {
            calendar_type:  'GREGORIAN',
            timezone:  'GMT'
        }
        },
        {
            entity:  'sys-number',
            location: [36, 40],
            value:  '2018', 
            confidence:  1,
            metadata: {
                numeric_value:  2018
            }
        },
        {
            entity:  'sys-date',
            location: [49, 52],
            value:  '2030-12-17',
            confidence:  1,
            metadata: {
                calendar_type:  'GREGORIAN',
                timezone:  'GMT'
            }
        }
        ];
        // we convert to date format here itself less
        var  filteredDates  =  ent.filter(f  => (f.entity  ===  'sys-date')).map(f  =>  new Date(f.value));  

        var getCurrentDate = ()=>new Date();

        var checkIfOlder =  (f/*:dateformat*/) =>(f > getCurrentDate());

        var replaceFutureDates = function(f/*:dateformat*/) {
                return (checkIfOlder(f)) ? getCurrentDate() : f;
        }

        /* cleaner IMHO*/
        var checkedDateFlag = filteredDates.every(checkIfOlder);
        var checkedDate = filteredDates.map(replaceFutureDates);

        /* combined function but very confusing output signature

        var dateMapper = (dates, onlyCheck)=> {
              if(onlyCheck) {
                  return dates.every(checkIfOlder);
              }
              return dates.map(replaceFutureDates);
        }

        var checkedDateFlag = dateMapper(filteredDates)
        var checkedDate =dateMapper(filteredDates, true)

        */

将日期功能合二为一

我正在为基于语音的应用程序的日期提取工作。我想知道如何查看日期,还可以在一个函数中添加用户要求更高日期的标记。现在我正在使用类似的功能,但如果有人可以指导我做一个,那就太好了。我的代码如下,

checkedDateFlag,checkedDate如何在一个中创建此函数,以便我可以获得正确的日期并获得标记(true)

Code

            let  ent  = [{
            entity:  'sys-number',
            location: [23, 25],
            value:  '12',
            confidence:  1,
            metadata: {
                numeric_value:  1
                }
            },
            {
                entity:  'sys-date',
                location: [23, 40],
                value:  '2017-02-16',
                confidence:  1,
                metadata: {
                calendar_type:  'GREGORIAN',
                timezone:  'GMT'
            }
            },
            {
                entity:  'sys-number',
                location: [36, 40],
                value:  '2018', 
                confidence:  1,
                metadata: {
                    numeric_value:  2018
                }
            },
            {
                entity:  'sys-date',
                location: [49, 52],
                value:  '2030-12-17',
                confidence:  1,
                metadata: {
                    calendar_type:  'GREGORIAN',
                    timezone:  'GMT'
                }
            }
            ];

            const  dateChecker  = (filteredDates, currentDate) => {
            // This function checking date higher than todays date and replace higher date with current date. 
            return  filteredDates.map(f  => {
                let  fd  =  new  Date(f);
                if(fd  >  currentDate) {
                    return  currentDate;
                } else {
                    return  fd;
                }
            })
            }

            const  dateCheckerFlag  = (filteredDates, currentDate) => {
                // This function return true if date is higher and I can check it later and create response saying you have provided higher date than today. I can only issue statement till today and then issue the statement 
                for (let  f  of  filteredDates) {
                    let  fd  =  new  Date(f);
                    if(fd  >  currentDate) {
                        return  true
                    } else {
                        return  false;
                    }
            }


            let  filteredDates  =  ent.filter(f  => {
                if (f.entity  ===  'sys-date') {
                    return  f.value
                }
            }).map(f  =>  f.value);

            let  checkedDateFlag  = helper.dateCheckerFlag(filteredDates, currentDate);
            let  checkedDate  =  helper.dateChecker(filteredDates, currentDate);
回答如下:

我建议不要将这两个功能结合起来。虽然他们似乎做同样的事情,但他们有完全不同的输出签名(布尔与数组)。

如果你认为他们有很多重复的代码。也许以下可能是一种方法。我将留下组合和单独的功能。但强烈推荐单独的一个。

 var  ent  = [{
        entity:  'sys-number',
        location: [23, 25],
        value:  '12',
        confidence:  1,
        metadata: {
            numeric_value:  1
            }
        },
        {
            entity:  'sys-date',
            location: [23, 40],
            value:  '2017-02-16',
            confidence:  1,
            metadata: {
            calendar_type:  'GREGORIAN',
            timezone:  'GMT'
        }
        },
        {
            entity:  'sys-number',
            location: [36, 40],
            value:  '2018', 
            confidence:  1,
            metadata: {
                numeric_value:  2018
            }
        },
        {
            entity:  'sys-date',
            location: [49, 52],
            value:  '2030-12-17',
            confidence:  1,
            metadata: {
                calendar_type:  'GREGORIAN',
                timezone:  'GMT'
            }
        }
        ];
        // we convert to date format here itself less
        var  filteredDates  =  ent.filter(f  => (f.entity  ===  'sys-date')).map(f  =>  new Date(f.value));  

        var getCurrentDate = ()=>new Date();

        var checkIfOlder =  (f/*:dateformat*/) =>(f > getCurrentDate());

        var replaceFutureDates = function(f/*:dateformat*/) {
                return (checkIfOlder(f)) ? getCurrentDate() : f;
        }

        /* cleaner IMHO*/
        var checkedDateFlag = filteredDates.every(checkIfOlder);
        var checkedDate = filteredDates.map(replaceFutureDates);

        /* combined function but very confusing output signature

        var dateMapper = (dates, onlyCheck)=> {
              if(onlyCheck) {
                  return dates.every(checkIfOlder);
              }
              return dates.map(replaceFutureDates);
        }

        var checkedDateFlag = dateMapper(filteredDates)
        var checkedDate =dateMapper(filteredDates, true)

        */

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论