Javascript 如何删除不同字符串数组中的特定数字?

Javascript 如何删除不同字符串数组中的特定数字?,javascript,Javascript,假设我有如下数组中的数据 "groupMapData": [ { "menu_id": 17, "menu_name_message_id": "menuName.viewgroups", "access_role_ids": "3,1,4" }, { "menu_id": 18, "menu_name_message_id":

假设我有如下数组中的数据

"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更改复选框值

如果它在accessrole中,则必须选中它,否则不选中它。

哦,让我们使用map

access_role_details.map((x)=>{
let role = x.access_role_ids
let roleArray = role.split(',');

//now we filter to remove the number you don't like eg. 4

roleArray.filter(k=>k != 4)

//now convert the array to a string and put it back

x.access_role_ids = roleArray.toString();

//return x now

return x;

}

var obj={“访问角色详细信息”:[
{
“菜单id”:17,
“菜单名称消息id”:“menuName.viewgroups”,
“访问角色ID”:“3,1,4”
},
{
“菜单id”:18,
“菜单名称消息id”:“menuName.creategroup”,
“访问角色ID”:“2,1,4,3”
}
]
};
var objData=obj.access_role_details[0];
var removietem=“1”;
var tempArr=objData.access\u role\u ids.split(“,”)//将逗号分隔转换为数组
var指数=临时指数(removeItem);
如果(索引!=-1){
临时拼接(索引1);
}
objData.access_role_id=tempArr.join();//将数组转换为逗号分隔的值

控制台日志(obj)您需要将字符串转换为数组,删除特定元素,然后再次将数组连接到字符串

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

请参阅以下代码:

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))
var myObj=JSON.parse(`{“access\u role\u details”:[
{
“菜单id”:17,
“菜单名称消息id”:“menuName.viewgroups”,
“访问角色ID”:“3,1,4”
},
{
“菜单id”:18,
“菜单名称消息id”:“menuName.creategroup”,
“访问角色ID”:“2,1,4,3”
}
]}`);
var tempArr=[];
var resultar=[];
var-access\u-role\u-id=1//要从access\u role\u ID中删除的值
对于(var i=0;iitem!=access\u role\u id);
//join方法将其转换为带“,”segrated的字符串
myObj.access_role_details[i].access_role_id=ResultArr.join(',');
}
log(JSON.stringify(myObj))

在什么情况下要删除?好的,我想更改复选框的状态。实际上,请创建一个添加的问题。我可以知道这是什么吗?ResultArr=tempArr.filter(item=>item!=access\u role\u id);tempArr包含访问\角色\ ID数组。我正在对access\u role\u id数组应用筛选操作,以从access\u role\u id数组中删除特定的access\u role\u id。filter方法将返回具有删除的特定访问\u角色\u id的数组。此语法项=>item!=access\u role\u idFilter方法将返回除access\u role\u id之外的所有数组元素。access\u role\u id将是要从access\u role\u id中删除的id。