开发者问题收集

字典错误-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