【发布时间】:2018-01-13 20:39:56
【问题描述】:
我有 findPlayerWithID 函数,它返回匹配的玩家 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;
}
但有时这行会出错
if (players.map((degisken) => degisken.get('id'))._tail === undefined) { continue; }
错误是
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)
更新 与@canaan-seaton answear 我改变 这个
if (players.filter(degisken => degisken !== null).map((degisken) => degisken.get('id'))._tail.array[i] === id) {
return i;
}
这项工作 但它在 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 的这一行
function(m) {return typeof m.merge === 'function' ?
我搜索那个错误
有一些信息,但我不明白我该怎么办https://github.com/facebook/immutable-js/issues/597
这是我的控制台
【问题讨论】:
-
如果您想将玩家映射到他们的 id,那么您应该使用对象而不是数组,其中键是玩家 id,值是包含玩家数据的对象。您的错误表明您的 player 数组中有
null值,我无法想象这是有意的。 -
@trixn 谢谢..我现在编辑了问题,它给出了 immutableJS 错误
标签: javascript reactjs react-redux immutable.js