javascript - 未捕获的 TypeError:[Array].filter 不是函数
问题描述
我正在尝试将数据从烧瓶 api 传递到 chart.js。我们正在使用 D3 进行 api 调用:
var queryUrl = "http://127.0.0.1:5000/api/1/GenderOverTime";
var searchResults = [];
d3.json(queryUrl).then(function (chart_data) {
searchResults = chart_data;});
setTimeout(function(){init()},50)
这是我们遇到错误的部分:
function init(){
console.log("searchResults: ", searchResults);
let selector = d3.select("#selDataset");
let options = []
filtered_data_for_chart = searchResults.filter(result=>{
if (!options.includes(result.Sport)){
options.push(result.Sport)
selector
.append("option")
.text(result.Sport)
.property("value", result.Sport);
}
return result.Sport==="Gymnastics"
});
运行后init()
,我们得到“ChartJSfile.js:14 Uncaught TypeError: searchResults.filter is not a function”。
在使用 api 之前,我们有另一个 js 脚本,将完全相同的数据保存为数组对象,并且图表和过滤器工作正常。
我们添加了setTimeout
以留出一些时间来获取数据,因为 init() 在数据加载到数组之前正在运行。
数据样本:
[{
"_id": {
"$oid": "61589a22cd5cc36ad5fc8898"
},
"Sport": "Aeronautics",
"Year": 1936,
"Sex": "M",
"Name": 1,
"Bronze": 0,
"Silver": 0,
"Gold": 1,
"No Win": 0,
"Attempts": 1,
"Wins": 1
},... ]
解决方案
如您在此处看到的,您的代码似乎可以正常工作
您可能需要对其进行重构,以确保在需要时可以访问搜索结果中的数据:
var queryUrl = "http://127.0.0.1:5000/api/1/GenderOverTime";
var searchResults = [];
d3.json(queryUrl).then(function (chart_data) {
searchResults = chart_data;
init(searchResults);
});
function init(results) {
console.log("searchResults: ", results);
let selector = d3.select("#selDataset");
let options = [];
filtered_data_for_chart = results.filter((result) => {
if (!options.includes(result.Sport)) {
options.push(result.Sport);
selector
.append("option")
.text(result.Sport)
.property("value", result.Sport);
}
return result.Sport === "Gymnastics";
});
}
推荐阅读
- python-3.x - 有没有办法将张量流预测变量反转为原始值?
- r - Excel 日期时间戳在导入 R 时发生更改。如何将其更改为 R 中的时间戳?
- javascript - 如何在邮递员测试中检查请求正文是否有密钥
- javascript - Chrome 中潜在的 CSS Scroll Snap 错误
- javascript - JavaScript 更改具有相同 ID 的图像路径
- facebook - facebook 使用图形 api 引导检索问题
- excel - 如何在microsoft excel中绘制图形?
- javascript - 基于两个属性对对象数组进行排序
- python - 为什么不先将迭代值分配给变量就无法比较迭代值?
- reactjs - 材质 UI 菜单组件中的 onChange