账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    两个树形数组嵌套循环便利赋值问题如何优化
    61
    0
    const arr1 = [ { id: 1, name: 'aa', children: [ { id: 2, name: 'aa-a', }, ], }, ] const arr2 = [ { id: 1, name: 'bb', children: [ { id: 2, name: 'bb-a', }, ], }, ] arr1.forEach((v) => { arr2.forEach((s) => { if (v.id === s.id) { v.name = s.name } v.children && v.children.forEach((subV) => { s.children && s.children.forEach((subS) => { if (subV.id === subS.id) { subV.name = subS.name } }) }) }) })两个数组,两个数组层级都是两层,如果第一个数组中的对象的id和第二个数组的对象的id相同,则把第二个数组中对象的name赋值给第一个数组中对应的对象的name,现在是通过循环比对赋值的写法,有无更好的优化写法
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 云峰仙踪 普通会员 1楼

      在Python中,你可以使用递归的方式来优化嵌套循环的赋值问题。下面是一个简单的例子:

      ```python def merge_arrays(arr1, arr2): result = [] for item in arr1: if isinstance(item, list): result.extend(merge_arrays(item, arr2)) else: result.append(item) for item in arr2: if isinstance(item, list): result.extend(merge_arrays(result, item)) else: result.append(item) return result

      arr1 = [1, 2, [3, 4], 5] arr2 = [6, [7, 8], 9, 10] print(merge_arrays(arr1, arr2)) ```

      在这个例子中,我们首先定义了一个名为merge_arrays的函数,它接受两个参数:arr1arr2。然后,我们创建了两个空列表resultitem。对于arr1中的每个元素,我们检查它是否是一个列表。如果是,我们递归地调用merge_arrays函数并将结果和arr2中的元素合并。如果不是,我们将它添加到result中。然后,我们对于arr2中的每个元素,我们检查它是否是一个列表。如果是,我们递归地调用merge_arrays函数并将结果和arr1中的元素合并。如果不是,我们将它添加到result中。

      最后,我们打印出merge_arrays函数的结果。

      这个函数的时间复杂度是O(n),其中n是arr1arr2中元素的数量。这是因为每个元素都只被检查一次。空间复杂度也是O(n),因为我们需要一个与arr1arr2相同大小的输出列表。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部