javascript - 修改动态嵌套数组,只知道要访问的索引

标签 javascript arrays json recursion ecmascript-6

我有必要修改一个嵌套的对象数组结构,该结构始终具有相同的模式,只知道访问我想要更改的特定对象的索引。

JSON 数组示例:

[
    {
    "name":"bob",
    "age":5,
    "subRows":[
        {   
            "name":"paul",
            "age":10,
            "subRows":[]
        },
        {   
            "name":"claire",
            "age":20,
            "subRows":[
                {   
                    "name":"carl",
                    "age":40,
                    "subRows":[]
                }
            ]
        }
    }
]

我需要动态删除一个每次都可能不同的对象,比如说名为“carl”的对象,因此要达到预期的结果:

[
    {
    "name":"bob",
    "age":5,
    "subRows":[
        {   
            "name":"paul",
            "age":10,
            "subRows":[]
        },
        {   
            "name":"claire",
            "age":20,
            "subRows":[]
        }
    }
]

了解Json结构的所有索引来访问它:

let indexesArray = [0, 1, 0];

我已经尝试过这个:

const deleteObject = (jsonData, indexesArray) =>{
    let pathToDelete =  "jsonData[indexesArray[0]]";
    for(let i=1; i<indexesArray.length(); i++){
        pathToDelete += ".subRows["i"]";
    ]
    pathToDelete = []; //empty the array removing "carl" object
    return jsonData;
}

如何让 javascript 处理动态创建的变量 pathTodelete 以删除特定对象?有更好的方法吗(当然,我的代码不起作用)?

最佳答案

您可以在索引数组上使用reduce方法,当找到最后一个索引并找到匹配项时,您可以使用splice通过索引从数组中删除该元素> 方法。

const data = [{"name":"bob","age":5,"subRows":[{"name":"paul","age":10,"subRows":[]},{"name":"claire","age":20,"subRows":[{"name":"carl","age":40,"subRows":[]}]}]}]

let indexesArray = [0, 1, 0];

indexesArray.reduce((r, e, i, a) => {
  const match = r[e];
  
  if (a.length == i + 1 && match) r.splice(e, 1)
  else if (match) return match.subRows;

  return {}
}, data)

console.log(data)

关于javascript - 修改动态嵌套数组,只知道要访问的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65239709/

相关文章:

c++ - cuda数组排序推力,内存不足

javascript - 从对象属性中删除双引号,除非以数字开头

javascript - Node.js 中的中间件设计模式 : Connect

arrays - 如何将列表中的元素重复n次?

javascript - 使用 jquery 在特定日期隐藏表列

java - 在JAVA中创建不固定大小的字节数据结构的最佳方法是什么

java - JsonMappingException : No suitable constructor found for type -- for an external object

json - 如何使用 jq 重新格式化 json 中的特定数据

Javascript addEventListener 麻烦

javascript - 为什么事件监听器只在 for 循环中创建的最后一个元素上注册?