当前位置: 首页 > 知识库问答 >
问题:

loops - js如何动态添加属性值?

殳宸
2024-03-26
当nodeList长度为2的时候 obj= _tableArray[nodeList[0]].children[nodeList[1]] ;以此类推如何用循环去写  let  editIndex = '0_1',let  editIndex = '0_1_1',let  editIndex = '0_1_1_2'代码如下let nodeList = editIndex.split('_')let obj = {}if(nodeList.length == 2){   obj= _tableArray[nodeList[0]].children[nodeList[1]]                }if(nodeList.length == 3){   obj= _tableArray[nodeList[0]].children[nodeList[1]].children[nodeList[2]] }if(nodeList.length == 4){   obj= _tableArray[nodeList[0]].children[nodeList[1]].children[nodeList[2]].children[nodeList[3]] }

预期结果:用循环去写,现在是写死的,当长度是2的时候是
obj= _tableArray[nodeList[0]].children[nodeList[1]]

共有2个答案

钮巴英
2024-03-26
nodeList.reduce((p, c) => p.children[c], { children: _tableArray })

测试:

const _tableArray: any[] = [],    nodeList = [0, 1, 2, 3]nodeList.forEach((_, i) => (_tableArray[i] = { children: _tableArray, i }))const o2 = _tableArray[nodeList[0]].children[nodeList[1]],    o3 = _tableArray[nodeList[0]].children[nodeList[1]].children[nodeList[2]],    o4 = _tableArray[nodeList[0]].children[nodeList[1]].children[nodeList[2]]            .children[nodeList[3]],    getN = (n: number) =>    nodeList            .slice(0, n)            .reduce((p, c) => p.children[c], { children: _tableArray, i: undefined })            .iconsole.assert(o2.i === getN(2), '2')console.assert(o3.i === getN(3), '3')console.assert(o4.i === getN(4), '4')
司马高昂
2024-03-26

你可以使用递归来动态地构建这个对象路径。首先,你可以定义一个递归函数,该函数会接收当前的对象和路径的下一个索引作为参数。然后,它会检查是否还有更多的索引需要处理,如果有,就递归地调用自身,否则返回当前的对象。

下面是一个使用 JavaScript 实现的示例:

function getObj(obj, indices) {  let current = obj;  for (let i = 0; i < indices.length; i++) {    current = current.children[indices[i]];  }  return current;}let editIndex = '0_1_1_2';let nodeList = editIndex.split('_');let _tableArray = {  // 你的_tableArray数据};let obj = getObj(_tableArray, nodeList);

在这个示例中,getObj 函数会遍历 indices 数组中的每个索引,并使用这些索引从 obj 中获取子对象。当遍历完所有的索引后,它就会返回最终的对象。

请注意,这个示例假设 _tableArray 和其所有子对象都有 children 属性,并且 nodeList 中的每个索引都是有效的。如果这些假设不成立,你可能需要添加一些额外的错误检查和处理逻辑。

 类似资料:
  • 我正在尝试在我的java spring项目中的swagger定义中添加新的属性。我已阅读文档并特别 https://springfox.github.io/springfox/docs/snapshot/#plugins 例如,我有这个定义: 我想要: 你能帮我在定义中添加meteo属性吗?在本例中,我的目标是以编程方式添加attribute,而不使用注释。

  • 我想在Angular 7中动态添加div属性。 我尝试了这个: 我有一个错误: 未捕获的错误:模板分析错误:无法绑定到“code ”,因为它不是“div”的已知属性。(" *ngFor="let e of etats。_ embedded . Etats " style = " background:{ { e . codecouleur } }!重要;“[错误-

  • 本文向大家介绍js中动态创建json,动态为json添加属性、属性值的实例,包括了js中动态创建json,动态为json添加属性、属性值的实例的使用技巧和注意事项,需要的朋友参考一下 如下所示: 在js中,一个[]认为是数组;{}认为是Json对象; var json = {}; 定义一个Json对象; 为Json对象赋值: json[aa] = "xx"; eval 解析json报错 提示缺少“

  • 问题内容: 目标是创建一个行为类似db结果集的模拟类。 因此,例如,如果数据库查询使用表达式返回,那么我想看看: 刚开始我以为我可以这样做: 但返回一个属性对象。 用替换该行根本没有用。 那么在运行时创建实例属性的正确方法是什么? 问题答案: 我想我应该扩大这个答案,因为我年纪大一些并且比较聪明,并且知道发生了什么事。迟到总比不到好。 你可以动态地向类添加属性。但这很重要:你必须将其添加到类中。

  • 问题内容: 嗨:在我们的应用程序中,我们已经从数据库中检索了一些数据,例如,表中包含以下字段:id,名称,年龄,地址,电子邮件。 然后,我们将根据客户提供一些这些属性。 如果客户需要ID,名称,我们将获得ID名称;如果客户需要ID,名称,年龄,则将获得ID,名称,年龄。 现在,我们想创建一个包装这些属性的类。但是,我们不知道确切要求哪个字段。 我可以在这里用Class替换地图吗? 问题答案: 如果

  • 本文向大家介绍JS实现给对象动态添加属性的方法,包括了JS实现给对象动态添加属性的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS实现给对象动态添加属性的方法。分享给大家供大家参考,具体如下: 在工作用要用到给jd对象动态添加属性的要求,在网上找到了一种解决方式,实例如下: 1、demo 这种方式试过确实可以 2、项目中使用 遍历input获取值,js对象动态添加属性和属性值。 更