javascript - 通过 d3.js 中的对象属性过滤嵌套的对象数组

标签 javascript arrays d3.js filter

我有一个陨石着陆数据集。
我按类型将数据嵌套在四个键中:

  var dataByType = d3.nest()
    .key(function(d) {
          return d.rectype;
    })
    .entries(dataset); // the original array

这是结果结构:data

enter image description here

现在我想创建新数组,过滤嵌套数组:我希望每个过滤后的数组只包含“质量”属性在定义范围内的对象.
所以我尝试了这个:

// filter small meteorites
var lightWeight = dataByType.forEach(function(d){
      d.values.filter(function (object) {
            var mass = object.mass;
            return mass <= 100;
      });
  });

但它返回undefined

嵌套给我带来了很多麻烦!我做错了什么?
提前致谢

最佳答案

我认为您在 forEach 的每次传递中都覆盖了 lightWeight。而是尝试创建 lightWeight 作为它自己的对象,然后在循环中添加你想要的键:

const lightWeight = {};

dataByType.forEach(function(d){
  lightWeight[d.key] = d.values.filter(function (object) {
    var mass = object.mass;
    return mass <= 100;
  });
});

工作笔(我认为?)正在做你想做的事: https://codepen.io/benjaminwfox/pen/veBjrP?editors=0012

关于javascript - 通过 d3.js 中的对象属性过滤嵌套的对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46164712/

相关文章:

javascript - d3 鼠标事件返回元素

javascript - ng-repeat with an if-statement in Angular

javascript - 从不同子域访问沙盒 iframe 中的摄像头和麦克风

javascript - 将 <param> 元素添加到 <object>

javascript - AngularJS 中文本框更改时延迟调用函数

arrays - Swift 中的数组操作和重新排序

arrays - 如何打印从 watch 连接即时消息返回的数组

javascript - 如何在 NVD3.js 中获取轴的更新和渲染值

d3.js - D3 : How to access an attribute of a previous item

javascript - 如何动态地将一个数组中的数据移动到另一个单独的数组