1 回答
TA贡献1821条经验 获得超6个赞
您可以匹配min和max并将数据放入哈希表中以映射已知键或添加新对象。
对于想要的密钥,您可以使用新密钥传播一个对象。
const
getValue = v => +v.toString().match(/\d+/)[0],
one = '<0',
two = '20+',
data = [{ key: '<0', value: 0 }, { key: 2, value: 0 }, { key: 3, value: 0 }, { key: 7, value: 0 }, { key: 8, value: 0 }, { key: '20+', value: 0 }],
min = getValue(one),
max = getValue(two),
getKey = k => ({ [min]: one, [max]: two }[k] || k),
keys = data.reduce((r, o) => (r[getValue(o.key)] = o, r), {}),
result = Array.from(
{ length: max - min + 1 },
(_, i) => ({ key: null, value: 99, ...keys[min + i], key: getKey(min + i) })
);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
添加回答
举报