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。