如何使用JavaScript获取对象中phone属性值的前两位字符
问题分析与解决方法
首先你现有的代码存在两个明显问题:
- 定义的数据结构语法非法:JavaScript中数组
[]内不能直接写"key": {}格式的键值对,键值对仅能在对象{}中使用,需要先根据你的业务场景修正数据结构 - 取值逻辑错误:你没有定位到
phone属性就直接调用字符串截取方法,自然无法拿到手机号的对应字符
步骤1:修正数据结构
场景1:你需要的是存储多个用户的数组结构
let userList = [ { "login-attempt": 1, "name": "ADMIN", "phone": "0777123456" } ]
场景2:你需要的是带自定义key的用户映射对象
let userMap = { "key": { "login-attempt": 1, "name": "ADMIN", "phone": "0777123456" } }
步骤2:提取手机号前两位
推荐使用标准字符串方法slice(substr属于遗留方法,不推荐继续使用):
- 数组结构取值:
userList[0].phone.slice(0, 2),返回结果为"07" - 映射对象取值:
userMap["key"].phone.slice(0, 2),返回结果为"07"
步骤3:按手机号前两位匹配查找目标
如果需要从集合中筛选所有手机号前两位符合要求的对象,可直接用filter方法实现:
- 数组结构筛选示例(筛选手机号前两位为07的用户):
const targetUsers = userList.filter(item => item.phone.slice(0, 2) === "07")
- 映射对象结构筛选示例:
const targetUsers = Object.values(userMap).filter(item => item.phone.slice(0, 2) === "07")
内容的提问来源于stack exchange,提问作者david marook
相关产品推荐
相关产品推荐

