好友
阅读权限10
听众
最后登录1970-1-1
|
150吾爱币
本帖最后由 zhairy 于 2022-10-12 17:56 编辑
现有两个 变量数组
[JavaScript] 纯文本查看 复制代码 const obja = [{ a: 6, t: 32 }]
const objb = [
{ s: 'a', t: 5, chart: [] },
{ s: 'a', t: 4, chart: [] },
{ s: 'a', t: 5, chart: [] },
{ s: 'a', t: 6, chart: [] },
{ s: 'a', t: 6, chart: [] },
{ s: 'a', t: 6, chart: [] },
]
或者是这样的
[JavaScript] 纯文本查看 复制代码
const obja = [{ a: 3, t: 14},{ b: 2, t: 12},{ c: 1, t: 6}]
const objb = [
{ s: 'a', t: 5, chart: [] },
{ s: 'a', t: 4, chart: [] },
{ s: 'a', t: 5, chart: [] },
{ s: 'b', t: 6, chart: [] },
{ s: 'b', t: 6, chart: [] },
{ s: 'c', t: 6, chart: [] },
]
现在希望经过计算能得到这样的 得到类似的结果
[JavaScript] 纯文本查看 复制代码 const a1 = [1, 0, 1, 0, 1, 0, 1, 1] //总和为 objb中对应的 t
const a2 = [0, 1, 1, 1, 0, 0, 1, 0]
const a3 = [1, 1, 0, 0, 1, 1, 0, 1]
const a4 = [1, 1, 1, 1, 1, 1, 0, 0]
const a5 = [0, 1, 0, 1, 1, 1, 1, 1]
const a6 = [1, 0, 1, 1, 0, 1, 1, 1]
或者这样的 希望得到的结果是 各个子数组 每个成员位置加起来的和 尽量是靠近 总体和的 整数平均数
[JavaScript] 纯文本查看 复制代码 const a1 = [1, 0, 1, 0, 1, 0, 1, 1] //总和为 objb中对应的 t
const a2 = [0, 1, 1, 1, 0, 0, 1, 0]
const a3 = [1, 1, 0, 0, 1, 1, 0, 1]
const b1 = [1, 1, 1, 1, 1, 1, 0, 0]
const b2 = [0, 1, 0, 1, 1, 1, 1, 1]
const b3 = [1, 0, 1, 1, 0, 1, 1, 1]
这个是个人 尝试计算的 代码 ,结果很不如意 ,有没有精通的大神 帮忙下 ,拜谢 !
[Asm] 纯文本查看 复制代码 const obja = [{ a: 6, t: 32 }]
const objb = [
{ s: 'a', t: 5, chart: [] },
{ s: 'a', t: 4, chart: [] },
{ s: 'a', t: 5, chart: [] },
{ s: 'a', t: 6, chart: [] },
{ s: 'a', t: 6, chart: [] },
{ s: 'a', t: 6, chart: [] },
]
function getData(len, v) {
let data = [];
let total = v
let avg = Math.floor(total / len);
let remainder = total % len;
for (let i = 0; i <= len; i++) {
if (remainder !== 0) {
data.push(avg + 1)
remainder--;
} else {
data.push(avg)
}
}
return data;
}
let a = 0
let data = [];
function bb() {
objb.map(e => {
const i = obja.findIndex(el => el[e.s])
if (!a) {
a = obja[i][e.s]
}
if (obja[i][e.s] == 1) {
e.chart = getData(9, e.t)
} else {
let temp = []
temp = getData(9, e.t)
if (a == obja[i][e.s]) {
data = getData(9, obja[i].t)
e.chart = temp
temp.forEach((item, x) => { data[x] = data[x] - item })
} else {
temp.forEach((item, x) => {
data[x] = data[x] - item
/* if (data[x] >= item) {
data[x] = data[x] - item
} else {
console.log(" data[x]", data[x]);
item = data[x]
temp[x + 1] += (item - data[x])
data[x] = 0
}*/
})
console.log("temp", temp);
e.chart = temp
}
}
a--
})
console.log('aaa', objb)
}
这个 数据 主要用来echarts 的批量展示
|
|