javascript - 如何使用空数组填写数量
问题描述
数组的长度固定为 5。
如果长度小于5,我想用一个空数组填充长度,并按顺序排列。
怎么做?
test = [
["qwe","0"],
["ewq","2"],
["aaa","4"],
]
变成
test = [
["qwe","0"],
["",""],
["ewq","2"],
["",""],
["aaa","4"],
["",""],
]
解决方案
算法
- 将数组的第二项转换
array
为 a作为键。map
您可以在此步骤中使用Array.reduce - 创建一个大小等于的空数组
size + 1
- 使用Array.map映射数组中的每个项目。如果它的索引在地图中,则在前一个数组中重新创建该项目。否则用“空”槽填充它
["", ""]
- 调用中描述的函数
3
和size
描述map
的函数1
执行
// Convert your array to a map
const fillArray = (m, size) => Array(size + 1).fill(0).map((x, idx) => `${idx}` in m ? [m[idx], `${idx}`] : ['', '']);
// Fill the array "in between"
const getArrayMap = arr => arr.reduce((acc, curr) => {
acc[curr[1]] = curr[0];
return acc;
}, {});
// Data
const size = 5;
const test = [
["qwe", "0"],
["ewq", "2"],
["aaa", "4"],
];
const filled = fillArray(getArrayMap(test), size);
console.log(filled);
笔记
- 您可以通过在执行任何测试 if 之前运行检查来优化这一点
size - 1 < test.length
。如果是这种情况,您不需要运行任何功能 test
您可以通过过滤数组并删除所有不遵循“标准形状”的项目来使其更加健壮。例如与test.filter(x => x.length === 2)
推荐阅读
- testing - 在 Apache Flink 中测试 RichCoFlatMapFunction
- react-admin - 如何分离表单数据和文件字段
- javascript - 错误:无法在视图目录“public”中查找视图“index”
- python - 基于数据框Python对文件进行排序
- android - 如何正确指定模块的源集?
- java - 当我的字符串中几乎有多个字符时,我想拆分我的 java 字符串数组
- oauth-2.0 - Microsoft Graph - 授权流程 - 从控制台应用程序获取授权代码
- go - 使用 Go Context 包时省略 ctx.Done() 是否安全?
- postgresql - 尝试创建函数时出现 Postgres plpgsql 错误
- azure - 将新版本的应用部署到当前运行的 Azure 应用服务实例有什么影响?