javascript - d3.js : sort nested arrays

标签 javascript

请问如何对嵌套的数组进行排序,如下所示?我想对数组 prob 进行排序,然后相应地重新排列 name 以便保持关系。

var records = [
{ num: 1, name: ["Sam", "Amy", "John"], prob: [0.3, 0.2, 0.5]},
{ num: 2, name: ["Nick", "Carol", "Sam"], prob: [0.5, 0.03, 0.47] },
{ num: 3, name: ["Ken", "Eric", "Ely"], prob: [0.1, 0.3, 0.6] },
{ num: 4, name: ["Amy", "Sam", "John"], prob: [0.6, 0.3, 0.1] },
{ num: 5, name: ["Chris", "Donna", "Jeff"], prob: [0.25, 0.55, 0.2] }
]

我想结束:

var records = [
{ num: 1, name: ["John", "Sam", "Amy"], prob: [0.5, 0.3, 0.2]},
{ num: 2, name: ["Nick", "Sam", "Carol"], prob: [0.5, 0.47, 0.03] },
{ num: 3, name: ["Ely", "Eric", "Ken"], prob: [0.6, 0.3, 0.1] },
{ num: 4, name: ["Amy", "Sam", "John"], prob: [0.6, 0.3, 0.1] },
{ num: 5, name: ["Donna", "Chris", "Jeff"], prob: [0.55, 0.25, 0.2] }
]

谢谢!

最佳答案

这里有一个解决方案:我们可以将 namesprob 存储在 pairs 中,同时对两个值进行排序,然后我们分配这些名称和 probs 排序到主要对象:

var records = [
{ num: 1, name: ["Sam", "Amy", "John"], prob: [0.3, 0.2, 0.5]},
{ num: 2, name: ["Nick", "Carol", "Sam"], prob: [0.5, 0.03, 0.47] },
{ num: 3, name: ["Ken", "Eric", "Ely"], prob: [0.1, 0.3, 0.6] },
{ num: 4, name: ["Amy", "Sam", "John"], prob: [0.6, 0.3, 0.1] },
{ num: 5, name: ["Chris", "Donna", "Jeff"], prob: [0.25, 0.55, 0.2] }
];

var pairs = records.map((e,i)=>
e.name.map((e2,i2)=>[e2,records[i].prob[i2]]).sort((a,b)=>b[1]-a[1])
);

records.map((e, i) => {
  e.name = pairs[i].map(o => o[0])
  e.prob = pairs[i].map(o => o[1])      
})

console.log(records)

关于javascript - d3.js : sort nested arrays,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52187378/

相关文章:

javascript - 如何显示 javascript 债务计数器(从 2016 年 1 月 1 日起以 0.80 美元/秒计算)?

javascript - 使用 $.number() 时禁用 keyup/keydown 格式 - Custom D 的 jQuery Number 插件

javascript - 如何用一个空格替换字符串字符?

切换浏览器选项卡时 JavaScript 动画不运行

javascript - 如何使用 JavaScript 禁用 Evernote 网页 View "max-width"?

javascript - 使用 Class 而不是 ID(通过 CLASS 而不是 ID 获取元素)

javascript - JSON 访问并在 Web 浏览器中显示

javascript - 在 Node.js 中输入 pincode 值时需要获取国家、州、城市和地区

php - 避免在未设置复选框时显示 JavaScript 确认

javascript - 将 C# View 模型转换为 JavaScript 模型时转义 HTML 标签