首页 > 解决方案 > 如何删除特定数量的各种字符串数组?

问题描述

假设我有类似以下数组的数据

"groupMapData": [
        {
            "menu_id": 17,
            "menu_name_message_id": "menuName.viewgroups",
            "access_role_ids": "3,1,4"
        },
        {
            "menu_id": 18,
            "menu_name_message_id": "menuName.creategroup",
            "access_role_ids": "2,1,4,3"
        }
    ]


checkboxfunction = (menuName, role, menuname) => {
        return menuname.some(menu => {
            let nameMatches = menu['menu_name_message_id'] === menuName,
                roleIncluded = menu['access_role_ids'].split(',')
                    .map(n => parseInt(n, 10))
                    .includes(role)
            return nameMatches && roleIncluded
        })
    }

findIndexfunction = (menuname,data) => {
    return data.findIndex(i => {
        return i.menu_name_message_id == menuname
    })
}


handleChange = (menuname, role, data) => event => {
    debugger
    let old_index_value=this.findIndexfunction(menuname, data)
    let old_roles=data[old_index_value].access_role_ids

    if (old_index_value) {
        if(event.target.checked){
            old_roles=old_roles.concat(role)
        }else{
            old_roles=old_roles.splice(old_index_value,1)  
        }
    }else{
        this.setState({ data: data })
    }

}




checked={groupMapData.length ? this.checkboxfunction("menuName.viewgroups", 2, groupMapData) : false}


 onChange={this.handleChange('menuName.viewgroups', 2, groupMapData)}

我正在从 handlechange 发送数据、角色、菜单名,现在我想根据 accessrole 更改复选框值。

如果它在访问角色中,则必须对其进行检查,否则未检查。

标签: javascript

解决方案


您需要将字符串转换为数组并删除特定元素,然后再次将数组加入字符串。

我们可以使用字符串操作来实现这一点,但更好的方法是将其转换为数组,然后执行删除操作。它会给你正确的结果。

参考以下代码:

var myObj = JSON.parse(`{"access_role_details": [
              {
                  "menu_id": 17,
                  "menu_name_message_id": "menuName.viewgroups",
                  "access_role_ids": "3,1,4"
              },
              {
                  "menu_id": 18,
                  "menu_name_message_id": "menuName.creategroup",
                  "access_role_ids": "2,1,4,3"
              }
          ]}`);


        var tempArr = [];
        var ResultArr = [];
        var access_role_id = 1;//Value you want to remove from the access_role_ids 
        for (var i = 0; i < myObj.access_role_details.length; i++)
        {
             tempArr = [];
             ResultArr = [];
             // split method to covert into array
             tempArr = myObj.access_role_details[i].access_role_ids.split(',');
             ResultArr = tempArr.filter(item => item != access_role_id);
             //join method to convert it into string with ',' seprated
             myObj.access_role_details[i].access_role_ids = ResultArr.join(',');
        }
        console.log(JSON.stringify(myObj))

推荐阅读