javascript - 根据内部数组值跳过 JSON 数据记录 - D3

标签 javascript json d3.js visualization

我的数据如下。

        data=[  {"venue":"Foyer","values":[{"avg":996.8,"sessions":[{"minTime":0,"maxTime":599,"count":50},
                                                {"minTime":600,"maxTime":1199,"count":39},
                                                {"minTime":1800,"maxTime":2399,"count":43},
                                                {"minTime":2400,"maxTime":2999,"count":48}],"timestamp":1449360000},
                        {"avg":986.4,"sessions":[{"minTime":0,"maxTime":599,"count":152},
                                                 {"minTime":600,"maxTime":1199,"count":51},
                                                 {"minTime":1200,"maxTime":1799,"count":36},
                                                 {"minTime":1800,"maxTime":2399,"count":68},
                                                 {"minTime":3000,"maxTime":3599,"count":34}],"timestamp":1452540000}]},
                {"venue":"Venue1","values":[{"avg":996.8,"sessions":[{"minTime":0,"maxTime":599,"count":62},
                                                {"minTime":600,"maxTime":1199,"count":33},
                                                {"minTime":1800,"maxTime":2399,"count":37},
                                                {"minTime":2400,"maxTime":2999,"count":24}],"timestamp":1449360000},
                        {"avg":986.4,"sessions":[{"minTime":0,"maxTime":599,"count":34},
                                                 {"minTime":600,"maxTime":1199,"count":52},
                                                 {"minTime":1200,"maxTime":1799,"count":21},
                                                 {"minTime":1800,"maxTime":2399,"count":142},
                                                 {"minTime":3000,"maxTime":3599,"count":23}],"timestamp":1452540000}]},
                {"venue":"Venue2","values":[{"avg":996.8,"sessions":[{"minTime":0,"maxTime":599,"count":44},
                                                {"minTime":600,"maxTime":1199,"count":25},
                                                {"minTime":1800,"maxTime":2399,"count":34},
                                                {"minTime":2400,"maxTime":2999,"count":23}],"timestamp":1449360000},
                        {"avg":986.4,"sessions":[{"minTime":0,"maxTime":599,"count":31},
                                                 {"minTime":600,"maxTime":1199,"count":11},
                                                 {"minTime":1200,"maxTime":1799,"count":122},
                                                 {"minTime":1800,"maxTime":2399,"count":12},
                                                 {"minTime":3000,"maxTime":3599,"count": 3}],"timestamp":1452540000}]}]

我想从仅具有匹配时间戳的“值”中过滤记录。应过滤“values”中不匹配时间戳的条目,但输出应具有相同的数据结构,

预期输出:

            [{"venue":"Foyer","values":[{"avg":996.8,"sessions":[{"minTime":0,"maxTime":599,"count":50},
                                    {"minTime":600,"maxTime":1199,"count":39},
                                    {"minTime":1800,"maxTime":2399,"count":43},
                                    {"minTime":2400,"maxTime":2999,"count":48}],"timestamp":1449360000}]},
            {"venue":"Venue1","values":[{"avg":996.8,"sessions":[{"minTime":0,"maxTime":599,"count":62},
                                    {"minTime":600,"maxTime":1199,"count":33},
                                    {"minTime":1800,"maxTime":2399,"count":37},
                                    {"minTime":2400,"maxTime":2999,"count":24}],"timestamp":1449360000}]},
            {"venue":"Venue2","values":[{"avg":996.8,"sessions":[{"minTime":0,"maxTime":599,"count":44},
                                    {"minTime":600,"maxTime":1199,"count":25},
                                    {"minTime":1800,"maxTime":2399,"count":34},
                                    {"minTime":2400,"maxTime":2999,"count":23}],"timestamp":1449360000}]}]

我尝试使用以下代码,但只出现了最后一个 field (venue2)。

代码:

                d3.json("Dwell.json", function(error,data){     
                data.forEach(function(a) {
                resultfilter={ "venue": a.venue, "values":a.values.filter(function (d) { return d.timestamp = 1449360000 }  ) }
                }) 
                document.write('<pre>' + JSON.stringify(resultfilter) + '</pre>');

最佳答案

这是因为你覆盖了 resultfilter每次运行 forEach称呼。 您可能想做类似 resultfilter.push( <FILTER RESULT>) 的事情在每个 forEach首次初始化 resultfilter 后循环大批。像这样的事情:

resultfilter = [];
data.forEach(function(a) {
    resultfilter.push(...);
}) 

(另外,看起来您复制的 data 对象有一些问题。如果它与复制/粘贴到此问题无关,那么也请检查一下)

关于javascript - 根据内部数组值跳过 JSON 数据记录 - D3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34971841/

相关文章:

javascript - 如何在链接单击时将 id 从数据库设置为 php session

javascript - JQuery 相同高度 DIV

javascript - 通过路由将 props 传递到页面的问题

javascript - 为什么我不能将此变量重新分配给 node.js 中的新值?

javascript - NodeJS/ExpressJS/MongoDB 简单 API 错误

python - 在反序列化过程中,是否有任何方便的方法可以将 python 中的 json 键从 string_int 转换为 int

facebook-fql - Facebook ID 整数被奇怪地返回

svg - d3.js - 与 d3.js 等效的 svg 过滤器

javascript - d3.js 缺少单词

svg - 如何使用d3.js更新现有svg元素的填充颜色?