javascript - 如何删除特定数量的各种字符串数组?
问题描述
假设我有类似以下数组的数据
"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 更改复选框值。
如果它在访问角色中,则必须对其进行检查,否则未检查。
解决方案
您需要将字符串转换为数组并删除特定元素,然后再次将数组加入字符串。
我们可以使用字符串操作来实现这一点,但更好的方法是将其转换为数组,然后执行删除操作。它会给你正确的结果。
参考以下代码:
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))
推荐阅读
- python - Python - 将文本文件拆分为具有字符长度限制的多个文件
- python - Python串行读取所有输出(无法跳出while循环)
- reactjs - 重定向到 404 页面无法正常工作
- odoo - JSON 中第 18 位的意外令牌 <
- r - 在 cooccur-package 中运行“cooccur”函数时出现问题:未定义选定的列
- python-3.x - 需要一些提示和优化技巧
- python - 即使已定义变量未定义错误
- angular - 使用 Angular Universal 实现国际化
- c# - Unity Intellisense 与 Visual Studio Code - Intellisense 主要工作除了方法,为什么?
- python - 使用 Python 从 Google Cloud Stackdriver API 获取 JSON 格式的 Stackdriver 日志