循环中出现Avoid using non-primitive value as key, use string/number value instead. 怎么解决
时间: 2024-02-04 12:02:13 浏览: 128
is-primitive:typeof值是javascript原语吗?
这个警告通常是因为在循环中使用了非原始值(如对象、数组等)作为键名,而这会导致一些问题,比如键名可能会被自动转换成字符串类型,或者可能会因为对象引用不同导致无法正常查找。
为了避免这个问题,可以将非原始值转换成字符串或数字类型作为键名。例如,可以使用对象的 toString() 方法或者 JSON.stringify() 方法将对象转换成字符串类型:
```javascript
const obj = { name: "John", age: 30 };
const map = new Map();
// 将对象转换成字符串类型作为键名
map.set(obj.toString(), "some value");
// 或者使用 JSON.stringify() 方法将对象转换成字符串类型
map.set(JSON.stringify(obj), "some value");
```
如果需要保留对象的引用,可以考虑使用一个 Map 数据结构,将对象作为值存储,然后使用一个字符串或数字作为键名。
阅读全文