javascript - 使用 .map 将数量转换为百分比

标签 javascript underscore.js lodash

我想使用 Javascript 的 lodash 将这个数组对象转换为百分比。这是对象:

gender = { 
  female: [14, 33, 28, 49],
  male: [33, 50, 42, 61]
}

我希望上面的对象是

genderPercent = { 
  female: [0.2978, 0.3975, ..., ...],
  male: [0.7021, 0.6024, ..., ...]
}

这是我已经尝试过的:

_.map(gender, function (val, index, list) {
  gender["male"][gender["male"].length-1] / gender["male"][gender["male"].length-1] + gender["female"][gender["female"].length-1])
});

但这似乎行不通。

有什么建议吗? :)

(注意:我需要随时间扩展的解决方案,因为我的性别数组每个月都在持续增长。)

最佳答案

如果男性和女性的长度始终相同,您可以只使用 for 循环:

var gender = { 
  female: [14, 33, 28, 49],
  male: [33, 50, 42, 61]
}
var m = gender.male;
var f = gender.female;

var genderP = {female:[], male:[]};
for (var i = 0; i < gender.female.length; i++) {
  var t = m[i] + f[i];
  genderP.male.push(m[i]/t);
  genderP.female.push(f[i]/t);
}

console.log(JSON.stringify(genderP, null, 2));
/*
{
  "female": [
    0.2978723404255319,
    0.39759036144578314,
    0.4,
    0.44545454545454544
  ],
  "male": [
    0.7021276595744681,
    0.6024096385542169,
    0.6,
    0.5545454545454546
  ]
}
*/

_.zip_.unzip 也可以使用:

var gender = { 
  female: [14, 33, 28, 49],
  male: [33, 50, 42, 61]
}

var genderP = _.zipObject(['male', 'female'], _.chain(_.zip(gender.male, gender.female))
  .map(function(pair) {
    var t = pair[0] + pair[1]
    return [pair[0] / t, pair[1] / t]
  })
  .unzip()
  .value());

console.log(JSON.stringify(genderP, null, 2));
/*
{
  "male": [
    0.7021276595744681,
    0.6024096385542169,
    0.6,
    0.5545454545454546
  ],
  "female": [
    0.2978723404255319,
    0.39759036144578314,
    0.4,
    0.44545454545454544
  ]
}
*/
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/3.7.0/lodash.min.js"></script>

关于javascript - 使用 .map 将数量转换为百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29872840/

相关文章:

javascript - 将对象转换为带下划线的数组

javascript - 组对象数组下划线js

javascript - 接受回调并创建只能调用一次的新版本回调的函数。 JavaScript

typescript lodash : How to declare a dictionary to use with _. map ?

javascript - 拖放上传文件验证 JQuery

javascript - 使用 javascript 更改元素的类

javascript - 使用 javascript 在 href 中更改 img src

javascript - 在网格中显示字母和数字,同时遵守一些(大多数排序)标准

javascript - 化简函数采用未定义的初始值

使用 lodash forEach 的 Javascript 函数返回未定义