首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过加法和排序进行自动类型推理

如何通过加法和排序进行自动类型推理
EN

Stack Overflow用户
提问于 2020-12-22 16:20:10
回答 2查看 57关注 0票数 2

我有一个具有以下数据的变量:

代码语言:javascript
复制
var data = [
    {date: "2007-04-23", a: "93.24", b: "10.24"},
    {date: "2007-04-24", a: "95.35", b: "20.24"},
    {date: "2007-04-25", a: "98.84", b: "30.24"},
    {date: "2007-04-26", a: "99.92", b: "40.24"}
    ];

我需要完成以下步骤:

  • 进行自动类型推断以添加a+b,因为它的字符串现在
  • 添加列“总计”和a+b
  • 按“总计”从最大到最小的

排序行的总和

其结果应该是:

代码语言:javascript
复制
var data = [
{date: "2007-04-26", a: 99.92, b: 40.24, total:140.16},
{date: "2007-04-24", a: 95.35, b: 20.24, total:115.59},
{date: "2007-04-23", a: 93.24, b: 20.24, total:113.48},
{date: "2007-04-25", a: 98.84, b: 10.24, total:109.08}
    ];

我知道在解析csv文件时您可以这样做。我试过以下几种方法,但不起作用

代码语言:javascript
复制
<!DOCTYPE html>
<html>
    <head>
  <script src="https://d3js.org/d3.v6.min.js"></script>
    
</head>
  
    <body>
   
        <script>
    var data = [
    {date: "2007-04-23", a: "93.24", b: "20.24"},
    {date: "2007-04-24", a: "95.35", b: "20.24"},
    {date: "2007-04-25", a: "98.84", b: "10.24"},
    {date: "2007-04-26", a: "99.92", b: "40.24"}

    ];
  data.columns = Object.keys(data[0]);
var data1 = autoType(data),
(d, i, columns) => (d3.autoType(d), d.total = d3.sum(columns, c => d[c]), d).sort((a, b) => b.total - a.total);

      
        </script>
    </body>
</html>

如何使用已定义的变量来完成此操作?

EN

回答 2

Stack Overflow用户

发布于 2020-12-22 16:29:16

您可以用总计映射一个新数组,并按total进行排序。

代码语言:javascript
复制
const
    data = [{ date: "2007-04-23", a: "93.24", b: "10.24" }, { date: "2007-04-24", a: "95.35", b: "20.24" }, { date: "2007-04-25", a: "98.84", b: "30.24" }, { date: "2007-04-26", a: "99.92", b: "40.24" }],
    result = data
        .map(({ a, b, ...o }) => ({ ...o, a: +a, b: +b, total: +(+a + +b).toFixed(2) }))
        .sort((a, b) => b.total - a.total);

console.log(result);
代码语言:javascript
复制
.as-console-wrapper { max-height: 100% !important; top: 0; }

票数 2
EN

Stack Overflow用户

发布于 2020-12-23 01:38:50

创建d3.autoType是为了在获取/解析DSV时使用,但是在您的情况下可以很容易地使用它,传递数组中的对象。例如(使用浏览器控制台查看真实日期对象):

代码语言:javascript
复制
var data = [
    {date: "2007-04-23", a: "93.24", b: "10.24"},
    {date: "2007-04-24", a: "95.35", b: "20.24"},
    {date: "2007-04-25", a: "98.84", b: "30.24"},
    {date: "2007-04-26", a: "99.92", b: "40.24"}
];
    
var converted = data.map(row => d3.autoType(row));

console.log(converted)
代码语言:javascript
复制
<script src="https://d3js.org/d3.v6.min.js"></script>

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

https://stackoverflow.com/questions/65412185

复制
相关文章

相似问题

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