字典错误-TypeError:undefined 不是一个对象
2020-08-11
758
我试图在 React-Native 中将一些数据作为字典 /JSON 存储在 JS 中。
我已经定义了这样的字典:
const [item, setItem] = useState({});
function onUpdate(id, quantity) {
console.debug('tab index : ' + tabIndex);
console.debug('id : ' + id);
console.debug('quantity : ' + quantity);
console.debug(item);
item[tabIndex][id] = quantity;
console.debug(item);
//I'm not setting it
//I have even tried declaring a second object, like :
//let i=item
//It also causes the same problem
}
在日志中我得到了:
[Tue Aug 11 2020 13:19:13.195] DEBUG tab index : 1
[Tue Aug 11 2020 13:19:13.198] DEBUG id : 1
[Tue Aug 11 2020 13:19:13.202] DEBUG quantity : 1
[Tue Aug 11 2020 13:19:13.203] DEBUG {}
[Tue Aug 11 2020 13:19:13.204] ERROR TypeError: undefined is not an object (evaluating 'item[tabIndex][id] = quantity')
这是为什么?
3个回答
如果
item
为
{},则
item[tabIndex]
为
undefined
;则
item[tabIndex][id]
等同于
undefined[id]
,从而导致错误。
Amadan
2020-08-11
原因很简单,正如@Amaden所说, 由于 item[tabIndex] 未定义,因此当您尝试在未定义的情况下添加某些内容时,您会收到错误。
因此,您应该首先检查未定义的条件,如果未定义,则先创建对象,然后添加,否则您可以直接添加数据。
var item = {};
var tabIndex = 1;
var id = 1;;
if(item[tabIndex] === undefined){
item[tabIndex] = {};
item[tabIndex][id]=10;
} else {
item[tabIndex][id] = 12;
}
console.log(item);
Harmandeep Singh Kalsi
2020-08-11
item
对象为空
{} 这就是为什么会出现未定义的情况,请检查您在
items
中设置数据的区域。
首先检查是否存在未定义情况,如果未定义,则先创建对象,然后添加。
if(item[tabIndex] === undefined){
// create object first
} else {
// directly add the data
}
Muhammad Haris Baig
2020-08-11