javascript - 在数组对象内找到未定义并插入对象
问题描述
这是我的阵列。我有多个对象,其中一些具有 values undefined
。
var array = [
{ 0: undefined, 1: 32, 2: "four" },
{ 0: undefined, 1: undefined, 2: "three" },
{ 0: undefined, 1: 24, 2: "two" },
{ 0: 14, 1: 24, 2: "five" },
{ 0: 10, 1: 21, 2: "one" },
]
我想检查数组对象是否具有未定义的值,如果它们有任何未定义的值,则应附加下一个对象。
示例在第一个元素{0: undefined, 1: 32, 2: "four"}
中,我有0:undefined
第二个{0: undefined, 1: undefined, 2: "three"}
元素应该替换 this 并且新对象应该形成 which is {0: {0: undefined, 1: undefined, 2: "three"}, 1: 32, 2: "four"}
。
我知道Array.forEach
可以做到这一点。如果它是数组,我可以通过使用Array.splice()
and来做Array.lastIndexOf()
。就像首先从右侧搜索或最后一个未定义的值并在其中附加下一个数组然后再做一次。
最终的数组必须是这样的:
{
0: {
0: {
0: 10,
1: 21,
2: "one"
},
1: {
0: {
0: 14,
1: 24,
2: "five"
},
1: 24,
2: "two"
},
2: "three"
},
1: 32,
2: "four"
}
解决方案
您可以使用递归函数来执行此操作,代码:
var array = [
{ 0: undefined, 1: 32, 2: "four" },
{ 0: undefined, 1: undefined, 2: "three" },
{ 0: undefined, 1: 24, 2: "two" },
{ 0: 14, 1: 24, 2: "five" },
{ 0: 10, 1: 21, 2: "one" }
]
function tree(array) {
let obj = array.shift();
for (let [key, value] of Object.entries(obj).reverse())
if (value === undefined)
obj[key] = tree(array);
return obj;
}
console.log(tree(array));
推荐阅读
- sql - 如何在 postgres 中按数组值查找所有链接的行?
- c++ - Botan 内部使用的内存未释放
- c# - 无法运行 UWP 应用程序
- powershell - 在数组 Powershell 中编写文件夹名
- php - 检查是否存在 WooCommerce 自定义订单状态以执行代码
- gitlab - 如何在 GitLab CI 中构建用于下载最新工件的作业名称的 url?
- javascript - 表单验证条件与反应
- reactjs - 不变违规:在上下文中找不到“客户端”或作为选项传入
- amazon-web-services - 如何使用 boto3 从 Glacier Deep Archive 本地下载存档?
- prisma - Prisma 中带有时区列的时间戳