将Javascript对象转换为数字数组

Gil*_*gio 2 javascript d3.js

我有一个有一组数字的对象

> var size = d3.values(data[0]);

>size
output:
["0", "14.71", "50.0", "35.29"]

>typeof(size);
output:
"object"
Run Code Online (Sandbox Code Playgroud)

我想总结宽度并获得如下输出:

[0,14.71,64.71,100]

但是我得到的输出如下:

>var width = [size[0],
                    size[0]+size[1],
                    size[0]+size[1]+size[2],
                    size[0]+size[1]+size[2]+size[3]];

>width
output:
["0", "014.71", "014.7150.0", "014.7150.035.29"]
Run Code Online (Sandbox Code Playgroud)

请帮我解决这个问题.提前致谢...

Nin*_*olz 11

您可以使用Array#mapand thisArgs和隐式转换来为元素编号.

var data = ["0", "14.71", "50.0", "35.29"],
    width = data.map(function (a) {
        return this.count += +a;
    }, { count: 0});

console.log(width);
Run Code Online (Sandbox Code Playgroud)

ES6没有使用thisArg(this不能使用箭头函数),但是有一个闭包count.

var data = ["0", "14.71", "50.0", "35.29"],
    width = data.map((count => a => count += +a)(0));

console.log(width);
Run Code Online (Sandbox Code Playgroud)