首页 > 解决方案 > 在标题键嵌套对象vue js上搜索和替换字符串

问题描述

我有一个包含多个键的嵌套对象,这些键还包括标题和子项。children 也是具有标题和子键的对象数组。(它们看起来像一棵树)如何搜索和替换一个单词或标题值的一部分?

const object = {
    id: 'uuid',
    title: 'hello You',
    type: number,
    visibility: true,
    children: [
        {
            id: 'uuid',
            title: 'You don't have any comments...',
            type: number,
            visibility: true,
            children: [{...}, {...}, ...],
            key1: {...},
            key2: [{...}]
        },
        {
            id: 'uuid',
            title: 'You your problem is not with json...',
            type: number,
            visibility: true,
            children: [{...}, {...}, ...],
            key1: {...},
            key2: [{...}]
       }
    ],
    key1: {...},
    key2: [{...}]
}

搜索you和替换world标题

output = {
    id: 'uuid',
    title: 'hello world',
    type: number,
    visibility: true,
    children: [
        {
            id: 'uuid',
            title: 'world don't have any comments...',
            type: number,
            visibility: true,
            children: [{...}, {...}, ...],
            key1: {...},
            key2: [{...}]
        },
        {
            id: 'uuid',
            title: 'world your problem is not with json...',
            type: number,
            visibility: true,
            children: [{...}, {...}, ...],
            key1: {...},
            key2: [{...}]
       }
    ],
    key1: {...},
    key2: [{...}]
}

标签: javascriptvue.jssearch

解决方案


您可以尝试使用递归策略来查找数组中的任何键,也可以搜索它们的孩子。

function recursive (newArray) {
  newArray.map(obj => {
    if (obj.title) {
      obj.title = obj.title.replace(/You/g, 'world')
    }
    if (obj.children) {
      return recursive (obj.children)
    }
  })
  return newArray
}

使用功能

let arr = [object]

recursive(arr)

推荐阅读