如何在Node.js中实现类PHP的foreach功能,筛选ignore_chats为1的ID
问题疏漏点
- 语法错误:JavaScript 没有你写的
foreach (key, igusers)这种语法,JS 遍历对象属性要么用for...in循环,要么先把对象的key转成数组用forEach数组方法遍历 - 循环体没有用大括号
{}包裹,只有第一行代码会被识别为循环内逻辑,后续代码都是全局执行 - 变量
ignoredids没有初始化默认值,直接拼接会在结果前多出undefined字符串 - JS里的数组方法
forEach是挂在数组原型上的,不能直接用来遍历普通对象
正确实现代码
如果你要和PHP实现一样输出[25895]这种拼接格式,代码如下:
// 假设igusers是你已经解析好的目标对象 let ignoredids = ''; // 用for...in遍历对象 for (const key in igusers) { const value = igusers[key]; // 原始数据里ignore_chats是字符串类型,用==1会自动类型转换,用=== '1'是严格匹配更稳妥 if (value.ignore_chats == 1) { ignoredids += `[${value.ignore_ignore_id}]`; } }
如果你要的是数组格式的结果[25895],更简洁的写法:
const result = Object.keys(igusers) .filter(key => igusers[key].ignore_chats == 1) .map(key => Number(igusers[key].ignore_ignore_id)); // 此时result的值就是 [25895],和你预期结果完全一致
内容的提问来源于stack exchange,提问作者Cain Nuke
相关产品推荐
相关产品推荐

