首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有from to值的D3切片数组

具有from to值的D3切片数组
EN

Stack Overflow用户
提问于 2019-05-21 17:33:58
回答 2查看 965关注 0票数 0

我有一个类似下面的数据集,

代码语言:javascript
复制
const data = [
    {frequency: 600, letter: 0, luminous: 234},
    {frequency: 2456, letter: 13, luminous: 4000},
    {frequency: 1200, letter: 2, luminous: 1402},
    {frequency: 1400, letter: 3, luminous: 1500},
    {frequency: 1234, letter: 4, luminous: 1800},
    {frequency: 768, letter: 5, luminous: 1900},
    {frequency: 3456, letter: 9, luminous: 2300},
    {frequency: 4567, letter: 10, luminous: 670},
    {frequency: 600, letter: 6, luminous: 2233},
    {frequency: 350, letter: 7, luminous: 1450},
    {frequency: 2340, letter: 8, luminous: 1470},
    {frequency: 4200, letter: 11, luminous: 5600},
    {frequency: 3000, letter: 12, luminous: 4500},
    {frequency: 1200, letter: 14, luminous: 4200},
    {frequency: 1100, letter: 15, luminous: 3000},
    {frequency: 1700, letter: 16, luminous: 4500},
];

我需要使用from值和2值对此数组数据进行切片,并使用d3

代码语言:javascript
复制
const maxLetter = d3.max(data, d => d.letter);
const width = 400;
const scaleX = scaleLinear()
    .domain([0, maxLetter])
    .range([0, width])
    .clamp(true)

是否可以从开始letter = 2开始对我的data数组进行切片,以结束此范围内的所有内容作为新数组?就像下面的d3?

代码语言:javascript
复制
const newData = [
    {frequency: 1200, letter: 2, luminous: 1402},
    {frequency: 1400, letter: 3, luminous: 1500},
    {frequency: 1234, letter: 4, luminous: 1800},
    {frequency: 768, letter: 5, luminous: 1900},
    {frequency: 600, letter: 6, luminous: 2233},
    {frequency: 350, letter: 7, luminous: 1450},
    {frequency: 2340, letter: 8, luminous: 1470},
    {frequency: 3456, letter: 9, luminous: 2300}
];
EN

回答 2

Stack Overflow用户

发布于 2019-05-21 18:02:44

为什么不用一个简单的循环呢?如下所示:

代码语言:javascript
复制
var newData = [];
for(var i = 0; i < data.length; i++){
  if(data[i].letter >= 2 && data[i].letter < 10){
    newData.push(data[i]);
  }
}

要获得按letter排序的newData数组,可以使用一个比较器:newData.sort((a, b) => a.letter - b.letter)

票数 1
EN

Stack Overflow用户

发布于 2019-05-21 19:40:30

要对数据执行操作,是最佳解决方案。

  • 根据关键字母
  • 将数据馈送到data维中使用筛选出data

代码语言:javascript
复制
const data = [
    {frequency: 600, letter: 0, luminous: 234},
    {frequency: 2456, letter: 13, luminous: 4000},
    {frequency: 1200, letter: 2, luminous: 1402},
    {frequency: 1400, letter: 3, luminous: 1500},
    {frequency: 1234, letter: 4, luminous: 1800},
    {frequency: 768, letter: 5, luminous: 1900},
    {frequency: 3456, letter: 9, luminous: 2300},
    {frequency: 4567, letter: 10, luminous: 670},
    {frequency: 600, letter: 6, luminous: 2233},
    {frequency: 350, letter: 7, luminous: 1450},
    {frequency: 2340, letter: 8, luminous: 1470},
    {frequency: 4200, letter: 11, luminous: 5600},
    {frequency: 3000, letter: 12, luminous: 4500},
    {frequency: 1200, letter: 14, luminous: 4200},
    {frequency: 1100, letter: 15, luminous: 3000},
    {frequency: 1700, letter: 16, luminous: 4500},
];

const CFX = crossfilter(data);
const dimension = CFX.dimension(function (d){ return d.letter; });

console.dir(dimension.top(Infinity).length);
dimension.filterRange([2, 10]);

console.dir(dimension.top(Infinity));
console.dir(dimension.top(Infinity).length);
代码语言:javascript
复制
<script src="http://dc-js.github.io/dc.js/js/crossfilter.js"></script>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56235346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档