【发布时间】:2020-08-15 17:37:38
【问题描述】:
背景:预处理代码将在大量数据上运行,以提取需要在图表上显示的属性。该图表是平行坐标图表。它将在浏览器中运行。
片段:提取更改的属性和相关类别
我的 sn-p 正确输出答案,但效率不高
var all = [
{
Dim_A: { v: '0', category: 'Window' },
Dim_B: { v: '-1', category: 'Wall' },
Dim_C: { v: '0', category: 'Wall' },
Dim_D: { v: '0', category: 'Exterior Wall' }
},
{
Dim_A: { v: '0', category: 'Window' },
Dim_B: { v: '2', category: 'Wall' },
Dim_C: { v: '1', category: 'Wall' },
Dim_D: { v: '0', category: 'Exterior Wall' }
},
{
Dim_A: { v: '0', category: 'Window' },
Dim_B: { v: '-1', category: 'Wall' },
Dim_C: { v: '0', category: 'Wall' }
},
{
Dim_A: { v: '0', category: 'Window' },
Dim_B: { v: '-1', category: 'Wall' },
Dim_C: { v: '0', category: 'Wall' },
Dim_E: { v: '0', category: 'Exterior Wall' }
}
]
if (all.length < 2) {
throw 'need at least 2'
}
let distinctDims = new Map()
for (let i = 0; i < all.length - 1; i++) {
for (let j = i + 1; j < all.length; j++) {
if (i === j) {
continue
}
let a = all[i]
let b = all[j]
for (let pa in a) {
if (!a[pa] || !b[pa] || a[pa].v !== b[pa].v)
distinctDims[pa] = { category: a[pa].category }
}
for (let pb in b) {
if (!a[pb] || !b[pb] || a[pb].v !== b[pb].v)
distinctDims[pb] = { category: b[pb].category }
}
}
}
console.log(distinctDims)
这输出正确。寻找更有效的方法。
【问题讨论】:
-
"Also on CodePen" 更好的是,使用 Stack Snippets(
[<>]工具栏按钮; here's how to do one)。 -
“正在寻找一种在比较图表上显示数据之前准备数据的有效方法” 准备它如何?你需要对它做什么?您是说您显示的代码正确地完成了任务,但您认为它效率低下并想要更好的方法?
-
@t-j-crowder - 可以,但对大量数据有好处
-
“提取已更改的属性” 是什么意思?在这种情况下“distinct”是什么意思?
-
通过 changed 我们是否包含存在于一个元素中而不存在于另一个元素中的属性?这似乎是在更改中包含属性
Dim_D和Dim_E的基础?
标签: javascript algorithm columnsorting