javascript - ReactJS/Javascript:映射函数和 JSON
问题描述
在控制台中,数据加载了我尝试渲染的 JSON 文件(见下文)。来自 Chrome 的错误消息是TypeError: data.map is not a function
. 我没有找到 d3.extent 函数的好例子,所以我在这里寻求一些帮助。Graph 组件如下所示:
constructor({data=[]}) {
console.log('construc data:', data)
const times = d3.extent(data.map(action => action.timestamp))
const range = [50, 450]
super({data})
this.state = {data, times, range}
}
JSON 文件:
{data:
action:
{action: [{action: "Changed", timestamp: 1499348050,…},…]}
解决方案
不正确的 JSON
您的 JSON 文件无效,因为您的密钥需要用引号括起来。使用JSON 验证器确保您拥有正确的 JSON 文件。
调用.map()
一个Object
导致一个TypeError
当您的数据从 JSON 文件加载时(并且不默认为构造函数设置的空数组),请确保它的形状为 an ,因为在 an而不是 an上Array
调用该.map()
方法会导致 a 。这是因为它是的原型的一部分,需要 a作为参数。Object
Array
TypeError
.map()
Array
d3.extent(array)
Array
阅读有关 JavaScript 的更多信息
Array
阅读有关 JavaScript 的更多信息
Object
正确的方法
如果您的 JSON 已正确加载到data
对象中,则以下内容应该有效:
d3.extent(data.action.action.map(action => action.timestamp))
推荐阅读
- html - 我的代码将使程序认为用户根本没有输入任何内容。我怎样才能保持价值观?
- vb.net - VB:语句出现在方法体之外
- tensorflow - Keras model.fit 在 TPU 上训练时导致 InvalidArgumentError
- java - 事务回滚在春季不起作用
- swiftui - 如何使用 .onDelete 中的值删除 FMDB 数据
- c# - 如何避免在 ASP.NET 核心控制器中重新加载资源
- java - 在java中重用现有接口实现的设计模式
- reactjs - 将 Wordpress 页面(跨域)嵌入到具有动态高度的 React 应用程序中
- sql-server - 使用 FV 和付款的现值公式
- python - 如何从熊猫中的数据框中按百分位数制作固定数量的组