如何创建一个JavaScript函数来查找彼此嵌套的对象和数组

亚当·斯塔克(Adam Stacko)

我有一个带有嵌套数组的对象和一个看起来像这样的对象:

// Recursive nested objects & arrays:
var obj = {
  children: [{
      parentname: "level 0, Benny",
      children: [{
          parentname: "level 0.0, Stevey",
          children: [{
              parentname: "level 0.0.0, Betty",
              children: []
            },
            {
              parentname: "level 0.0.1, AFGNCAAP",
              children: [{
                parentname: "level 0.0.1.0, Moonman",
                children: []
              }]
            }
          ]
        },
        {
          parentname: "level 0.1, Oreo",
          children: []
        }
      ]
    },
    {
      parentname: "level 1, Jupiter",
      children: []
    }
  ]
};

// I am able to retrieve values with various length formulas:
console.log(obj.children[0].parentname); // level 0, Benny
console.log(obj.children[0].children[0].parentname); // level 0.0, Stevey
console.log(obj.children[0].children[0].children[0].parentname); // level 0.0.0, Betty
console.log(obj.children[0].children[0].children[1].parentname); // level 0.0.1, AFGNCAAP
console.log(obj.children[0].children[0].children[1].children[0].parentname); // level 0.0.1.0, Moonman
console.log(obj.children[0].children[1].parentname); // level 0.1, Oreo
console.log(obj.children[1].parentname); // level 1, Jupiter


// And I able to reduce formulas into functions...per level of nesting, example 1 level:
function getNameWorking1(name, level) {
  console.log(obj[name][level].parentname);
}
getNameWorking1(["children"], [1]) // level 1, Jupiter

// And example 2 levels:
function getNameWorking2(name, level) {
  console.log(obj[name][level[0]][name][level[1]].parentname);
}
getNameWorking2(["children"], [
  [0],
  [1]
]) // level 0.1, Oreo

// I am trying to create a single function that I can send a parameter with the sequence of property name & array values.  This does not work:
function getNameNotWorking(parameter) {
  console.log(obj[parameter].parentname);
}
getNameNotWorking("[children][1]");
getNameNotWorking("[children][0][children][1]");

我正在尝试创建一个函数,该函数可以按属性名称和数组值的顺序发送参数。最后一个功能不起作用。有什么帮助吗?

顺便说一句。我有一个递归函数确实可以做到这一点。但是它每次从头开始就起作用,并仔细阅读每个嵌套对象和数组,直到找到我要查找的项目为止。似乎重复做可能太过分了。因此,我正在寻找一种方法,以便在知道对象位置后通过所有子数组值查找该对象。

高拉夫·萨拉斯瓦特(Gaurav Saraswat)

我认为您不应该pass your parameters separated by white sapace使用方括号括起来,以使解析和解决方案更加容易

和。干得好 :)

function getNameWorking1(parameter, obj) {
  paramsList = parameter.split(' ').filter(prop => Boolean(prop)).map(prop => prop.trim());

  return paramsList.reduce((val, prop) => {
    return val[prop];
  }, obj).parentname;
}


//Working example:

var obj = {
  children: [{
      parentname: "level 0, Benny",
      children: [{
          parentname: "level 0.0, Stevey",
          children: [{
              parentname: "level 0.0.0, Betty",
              children: []
            },
            {
              parentname: "level 0.0.1, AFGNCAAP",
              children: [{
                parentname: "level 0.0.1.0, Moonman",
                children: []
              }]
            }
          ]
        },
        {
          parentname: "level 0.1, Oreo",
          children: []
        }
      ]
    },
    {
      parentname: "level 1, Jupiter",
      children: []
    }
  ]
};

console.log(getNameWorking1("children 1", obj));
console.log(getNameWorking1("children 0 children 1", obj));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我如何创建一个函数来检查对象JavaScript数组中的布尔字段

如何创建一个函数来从嵌套对象中检索所有孩子的 id

如何创建一个函数来选择特定的数组?

JavaScript:创建一个函数来拒绝被认为是真实的数组元素,从而麻烦数组中的对象的值

JavaScript:如何创建一个函数来接收一个数字数组并返回一个只包含正数的数组?

如何使用reduce、map或filter创建一个函数来显示和计算数组对象的每个值?

如何使用两个参数创建一个函数来查找节点是否存在?

如何创建一个函数来查找给定两个参数的可整除位数

如何创建一个函数来查找字符串中的重复项?

如何创建一个函数来查找可被 7 整除但不能被 5 整除的数字

我们如何创建一个递归函数来查找数字的最高位数?

如何编写一个函数来查找数组中最大整数的索引?

创建一个纯函数来合并对象

JavaScript:创建将嵌套数组中的数据转换为具有多个对象的一个数组的函数

我如何创建一个函数来更改数组中的值?

我如何创建一个函数来读取用户在C中插入数组的数字?

如何创建一个函数来创建 N(numbers) 个具有 N 个属性的对象?

尝试编写一个函数来确定复杂对象的深层嵌套子数组是否有值

如何创建一个函数来计算年份?

如何定义一个函数来创建列表

如何在和数组中复制一个Javascript对象并分别编辑这些对象

forEach和map函数迭代对象的嵌套json数组并创建一个新数组

创建一个函数来接受一个二维数组并返回一个显示所有键:值的对象

如何在LISP中创建一个递归函数来计算原子在嵌套列表中出现的次数

您将如何创建一个函数来使用 python 查找少于 4 个字符的单词的频率?

如何循环嵌套对象和数组Javascript?

如何使用一个参数来实现函数来交换对象的私有内容

如何创建一个类型函数来检查TypeScript中的类型是否为空对象?

定义一个函数来调用嵌套函数