Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获类型错误:无法读取属性';获取';映射函数中null的定义_Javascript_Reactjs_React Redux_Immutable.js - Fatal编程技术网

Javascript 未捕获类型错误:无法读取属性';获取';映射函数中null的定义

Javascript 未捕获类型错误:无法读取属性';获取';映射函数中null的定义,javascript,reactjs,react-redux,immutable.js,Javascript,Reactjs,React Redux,Immutable.js,我找到了一个返回匹配的玩家id的函数 function findPlayerWithID(players, id) { let i = 0; for (; i < players.count(); i++) { if (players.map((degisken) => degisken.get('id'))._tail === undefined) { continue; } if (players.map((degisken) =>

我找到了一个返回匹配的玩家id的函数

function findPlayerWithID(players, id) {
  let i = 0;
  for (; i < players.count(); i++) {
        if (players.map((degisken) => degisken.get('id'))._tail === undefined) { continue; }

        if (players.map((degisken) => degisken.get('id'))._tail.array[i] === id) {
          return i;
        }
  }
  return -1;
}
错误是

gameStore.js:38 Uncaught TypeError: Cannot read property 'get' of null
    at gameStore.js:38
    at immutable.js:3018
    at Ue.__iterate (immutable.js:2208)
    at r.__iterateUncached (immutable.js:3017)
    at F (immutable.js:606)
    at r.T.__iterate (immutable.js:322)
    at r.toArray (immutable.js:4260)
    at new Ue (immutable.js:2067)
    at _t (immutable.js:3572)
    at Ue.map (immutable.js:4403)
我认为错误是因为空对象 我如何在此行中检查null

if (players.map((degisken) => degisken.get('id')).




immutable.js:1317 Uncaught TypeError: Cannot read property 'merge' of null
    at immutable.js:1317
    at Ne (immutable.js:1973)
    at Ne (immutable.js:1982)
    at Ne (immutable.js:1982)
    at pe.updateIn (immutable.js:1280)
    at pe.mergeIn (immutable.js:1314)
    at gameStore.js:207
    at createReducer.js:15
    at combineReducers.js:133
    at c (createStore.js:178)
更新 有了@Canan seaton answear我就换了 这个

这项工作 但它在immutablejs中给出了另一个错误

Uncaught TypeError: Cannot read property 'merge' of null
    at immutable.js:1317
    at Ne (immutable.js:1973)
    at Ne (immutable.js:1982)
    at Ne (immutable.js:1982)
    at pe.updateIn (immutable.js:1280)
    at pe.mergeIn (immutable.js:1314)
    at gameStore.js:207
    at createReducer.js:15
    at combineReducers.js:133
    at c (createStore.js:178)
在immutablejs中的这一行

Uncaught TypeError: Cannot read property 'merge' of null
    at immutable.js:1317
    at Ne (immutable.js:1973)
    at Ne (immutable.js:1982)
    at Ne (immutable.js:1982)
    at pe.updateIn (immutable.js:1280)
    at pe.mergeIn (immutable.js:1314)
    at gameStore.js:207
    at createReducer.js:15
    at combineReducers.js:133
    at c (createStore.js:178)
函数(m){return typeof m.merge=='function'

我为那个错误感到抱歉 有一些信息,但我不知道该怎么办
这是我的控制台

如果您只想检查数组是否包含元素,则可以执行以下操作

if(players&&players.length>0){/*Do Stuff*/}

如果您担心数组中的特定索引为空,那么您可以这样做

if (players.filter(degisken => degisken !== null)
   .map((degisken) => degisken.get('id'))._tail === undefined)
   {/* Do Stuff */}

通常,检查是否与未定义的
相等不是一个好的做法

我会尝试这样做: 首先,为了确保
degisken
确实存在,您可以使用
degisken&°isken.get(id)

第二,您可能希望使用对象的hasOwnProperty方法,该方法在这里很有用:

players.map((degisken) => {
   const id = degisken && degisken.get('id');
   if(id && id.hasOwnProperty('_tail') && id._tail.array[i] === id){
     return i
   }
});

如果你想将玩家映射到他们的id,那么你应该使用一个对象而不是一个数组,该数组的键是玩家id,值是一个包含玩家数据的对象。你的错误表明玩家数组中有
null
值,这是我想象不到的。@trixn谢谢..我现在编辑了这个问题,它给出了immutableJS errorThank.filter是有效的。我现在编辑了这个问题,它给immutableJS errorwith@matmiz answear it work和immutable not give error谢谢
players.map((degisken) => {
   const id = degisken && degisken.get('id');
   if(id && id.hasOwnProperty('_tail') && id._tail.array[i] === id){
     return i
   }
});