Angular中遍历对象时entries方法不可用的解决办法
解决Angular中遍历
{ [key: string]: any }类型对象的entries方法报错问题 你遇到的问题核心是普通JavaScript对象没有entries()实例方法,entries()是数组的专属方法,而你这里的items是键值对类型的普通对象,直接调用items.entries()自然会报错。下面是几种可行的解决办法:
方法1:使用Object.entries()遍历键值对
这是最直接的替代方案,Object.entries()是Object的静态方法,能把对象转换成包含键值对的数组,之后就可以用for...of遍历:
searchNode(items: { [key: string]: any }) { // 调用Object的静态方法entries,传入目标对象 for (let [key, value] of Object.entries(items)) { console.log(key); // 输出对象的键 console.log(value); // 输出对应的值 } }
方法2:仅遍历键/值
如果只需要对象的键或者值,可以用对应静态方法:
- 遍历键:
Object.keys(items) - 遍历值:
Object.values(items)
示例(遍历键):
searchNode(items: { [key: string]: any }) { for (let key of Object.keys(items)) { console.log(key); console.log(items[key]); // 通过键获取对应值 } }
方法3:使用for...in循环
传统的for...in也可以遍历对象,但要注意过滤原型链上的属性:
searchNode(items: { [key: string]: any }) { for (let key in items) { // 确保只遍历对象自身的属性 if (items.hasOwnProperty(key)) { console.log(key); console.log(items[key]); } } }
内容的提问来源于stack exchange,提问作者Maks
相关产品推荐
相关产品推荐

