如何用json内的属性替换字符串。

有一个这样的字符串,
ouabc;ouweix;oualex;5;oumyhome;1;
想将里面的数字,用下面json里的值替换(匹配id的值,取该id下所有的children里的id)。变成这样:ouabc;ouweix;oualex;ou9QFwjzTVc;ou9QFwk1I4q;ou9QFwh0aqC;ou9QFwp-LV;oumyhome;ou9QFwijJ4;ou9QFwoPJh;


{
    "data": [
        {
            "id": "1",
            "deptname": "办公室",
            "children": [
                {
                    "id": "ou9QFwijJ4",
                    "deptname": "张三",
                    "children": []
                },
                {
                    "id": "ou9QFwoPJh",
                    "deptname": "李四",
                    "children": []
                }
            ]
        },
        {
            "id": "5",
            "deptname": "市场部",
            "children": [
                {
                    "id": "ou9QFwjzTVc",
                    "deptname": "黄五",
                    "children": []
                },
                {
                    "id": "ou9QFwk1I4q",
                    "deptname": "黎六",
                    "children": []
                },
                {
                    "id": "ou9QFwh0aqC",
                    "deptname": "谭七",
                    "children": []
                },
                {
                    "id": "ou9QFwp-LV",
                    "deptname": "林八",
                    "children": []
                }
            ]
        }
    ]
}
阅读 2.3k
2 个回答
var obj = {
    "data": [
        {
            "id": "1",
            "deptname": "办公室",
            "children": [
                {
                    "id": "ou9QFwijJ4",
                    "deptname": "张三",
                    "children": []
                },
                {
                    "id": "ou9QFwoPJh",
                    "deptname": "李四",
                    "children": []
                }
            ]
        },
        {
            "id": "5",
            "deptname": "市场部",
            "children": [
                {
                    "id": "ou9QFwjzTVc",
                    "deptname": "黄五",
                    "children": []
                },
                {
                    "id": "ou9QFwk1I4q",
                    "deptname": "黎六",
                    "children": []
                },
                {
                    "id": "ou9QFwh0aqC",
                    "deptname": "谭七",
                    "children": []
                },
                {
                    "id": "ou9QFwp-LV",
                    "deptname": "林八",
                    "children": []
                }
            ]
        }
    ]
};
var str = "ouabc;ouweix;oualex;5;oumyhome;1;";
var ret = str.replace(/[0-9]+/g, function(s) {
    var item = obj.data.find(function(n) {
        return +n.id === +s;
    });
    return (function getChildrenId(o) {
        var tmp, ref = "";
        if (Array.isArray(o.children) && o.children.length) {
            ref = o.children.reduce(function(r, n) {
                r.push(n.id);
                (tmp = getChildrenId(n)) && r.push(tmp);
                return r;
            }, []).join(";");
        }
        return ref;
    })(item);
});
console.log(ret);
var obj = {
    "data": [
        {
            "id": "1",
            "deptname": "办公室",
            "children": [
                {
                    "id": "ou9QFwijJ4",
                    "deptname": "张三",
                    "children": []
                },
                {
                    "id": "ou9QFwoPJh",
                    "deptname": "李四",
                    "children": []
                }
            ]
        },
        {
            "id": "5",
            "deptname": "市场部",
            "children": [
                {
                    "id": "ou9QFwjzTVc",
                    "deptname": "黄五",
                    "children": []
                },
                {
                    "id": "ou9QFwk1I4q",
                    "deptname": "黎六",
                    "children": []
                },
                {
                    "id": "ou9QFwh0aqC",
                    "deptname": "谭七",
                    "children": []
                },
                {
                    "id": "ou9QFwp-LV",
                    "deptname": "林八",
                    "children": []
                }
            ]
        }
    ]
}
var str = "ouabc;ouweix;oualex;5;oumyhome;1;";

function setStr(str) {
  var arr = str.split(';');
  var newObj = {};
  obj.data.forEach(item => {
    newObj[item.id] = item.children.map(_item => _item.id);
  })
  Object.keys(newObj).forEach(item => {
    arr.splice(arr.indexOf(item), 1, newObj[item])
  })
  return arr.join(';');
}
console.log(setStr(str));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题