繁体   English   中英

按年份过滤 json 数据

[英]filtering json data by year

我希望过滤掉 2000 年到 2021 年之间的记录。

"Rank": 50,
   "Title": "Casablanca",
   "Description": "A cynical nightclub owner protects an old flame and her husband from Nazis in Morocco.",
   "Runtime": 102,
   "Genre": "Drama",
   "Rating": 8.5,
   "Metascore": "100",
   "Votes": 441864,
   "Gross_Earning_in_Mil": "1.02",
   "Director": "Michael Curtiz",
   "Actor": "Humphrey Bogart",
   "Year": 1942

我尝试使用从不同解决方案中找到的方法,但它无法正常工作。

var startDate = new Date("1990");
var endDate = new Date("2000");

var resultProductData = movies.filter(a => {
  var date = new Date(a.Year);
  return (date >= startDate && date <= endDate);
});

创建 Date 对象在这里没有任何好处,因为 year 属性已经存储为 integer 你可以直接比较它

const result = movies.filter(({year}) => (year >= 2000 && year =< 2021)); 

但是您的过滤器不起作用的原因是您正在从字符串创建startDateendDate日期,并从 integer 创建比较日期。 字符串被解释为年,而 js 将 integer 解释为自纪元时间以来的毫秒数。

var startDate = new Date("1990");
// Mon Jan 01 1990 00:00:00 GMT+0000 (GMT)
var endDate = new Date("2000");
// Sat Jan 01 2000 00:00:00 GMT+0000 (GMT)

const a = { "Year": 1942 }
var date = new Date(a.Year);
// Thu Jan 01 1970 00:00:01 GMT+0000 (GMT)

要修复它,您需要将您的movie.year转换为字符串。

var resultProductData = movies.filter(a => {
  var date = new Date(a.Year.toString());
  ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM