如何在我的代码中使用包含在javascript中?

如何在我的代码中使用包含在javascript中?,javascript,reactjs,Javascript,Reactjs,API中的groupMapdata将作为 [ { "menu_id": 1666667, "menu_name_message_id": "menuName.viewgroups", "access_role_ids": "1,3" }, { "menu_id": 1666668, "menu_name_message_id": "menuName.creategroup",

API中的groupMapdata将作为

[
    {
        "menu_id": 1666667,
        "menu_name_message_id": "menuName.viewgroups",
        "access_role_ids": "1,3"
    },
    {
        "menu_id": 1666668,
        "menu_name_message_id": "menuName.creategroup",
        "access_role_ids": "4,3,2,1"
    }
]
checked={groupMapData.length?this.checkboxfunction(“menuName.creategroup”,2,groupMapData):false}
我已将复选框函数编写为:

checkboxfunction=(菜单名、角色、数据)=>{
返回(数据包括(菜单名)和数据包括(角色))
}
现在它希望checkbox函数返回true


如何执行此操作?

如果希望数据中的至少一个对象包含至少一个属性,可以使用以下代码

return (data.some(x=>x.menu_name_message_id = menumenuname) && data.some(x=>(x.roleId || '').indexOf(ole)!= -1)
如果希望至少一个对象同时包含newname和role,则可以使用

  return (data.some(x=>x.menu_name_message_id = menumenuname) && (x.roleId || '').indexOf(ole)!= -1)

您应该使用
Array.prototype.some
来检测是否存在至少一个匹配项

另外,
Array.prototype.includes
将不会定位数字的整数版本;在检查之前,需要将角色ID映射/解析为整数

const checkboxFn=(菜单名、角色、菜单)=>{
返回菜单。一些(菜单=>{
让nameMatches=menu['menu\u name\u message\u id']==menuName,
roleIncluded=菜单['access\u role\u ID']。拆分(','))
.map(n=>parseInt(n,10))
.包括(角色)
返回名称匹配项和角色包含(&R)
})
}
例子
const groupMapData=[{
“菜单id”:1666667,
“菜单名称消息id”:“menuName.viewgroups”,
“访问角色ID”:“1,3”
}, {
“菜单id”:1666668,
“菜单名称消息id”:“menuName.creategroup”,
“访问角色ID”:“4,3,2,1”
}]
常量checkboxFn=(菜单名、角色、菜单)=>{
返回菜单。一些(菜单=>menu['menu\u name\u message\u id']==menuName
&&菜单['access_role_id'].split(',').map(n=>parseInt(n,10)).includes(role))
}
让选中=groupMapData.length
? 复选框fn(“menuName.creategroup”,2,groupMapData)
:错
console.log(选中)//true
.as控制台包装{top:0;max height:100%!important;}
仅对每个元素执行表面级比较。对于对象,除非它们共享相同的引用,否则将始终返回
false

// Array.prototype.includes() Example
const x = {}
const y = [x]
y.includes(x) // true
y.includes({}) // false
更适合于比较嵌套属性

// Array.prototype.some() Example
const input = [
  {menu_id: 1666667, menu_name_message_id: 'menuName.viewgroups', access_role_ids: '1,3'}, 
  {menu_id: 1666668, menu_name_message_id: 'menuName.creategroup', access_role_ids: '4,3,2,1'}
]
const dataIncludesMenuNameAndRole = (data, menuName, role) => {
  const dataIncludesMenuName = data.some(element => element.menu_name_message_id === menuName)
  const dataIncludesRole = data.some(element => element.access_role_ids === role)
  return dataIncludesMenuName && dataIncludesRole
}

注意:两种算法都不检查同一个元素是否包含两个值的匹配道具,只检查这些值是否作为数组中元素的道具存在。

我应该根据访问角色id和菜单返回checked或unchecked\u name\u message\u idlike如何做?您需要
const checked=groupMapData.some(item=>item.menu\u name\u message\u id==“menuName.creategroup”);
如何处理此复选框的更改?handleChange=(名称、角色、数据)=>event=>{let old\u status\u value=this.checked函数(名称、角色、数据)if(old\u status\u value){old\u status\u value=event.target.checked?1:0}this.setState({data:data})onChange={this.handleChange('menuName.creategroup',2,groupMapData)}@NagaSai虽然我想在这里回答这个问题,但这是一个与“includes”如何工作完全不同的问题。我只想为它打开一个新问题,寻找解决方案。