javascript - IE9:如果字符串的值在对象数组中匹配,则操作字符串
问题描述
在下面的函数 setChildNumber 中传递了“Child2”或“Child3”、“Child4”等字符串。“family”变量包含对象数组。我添加了一个示例数据。此代码需要支持 IE9。所以我不能使用“查找”。
客观的:
我需要帮助从对象的家庭数组中查找索引,如果 family.type === child 和 id === memberID,则将 memberID 替换为 family[] 中的索引
function setChildNumber(member) {
var family = JSON.parse(sessionStorage.getItem('memberObject'));
var memberID = +member.match(/\d+/)[0];
if(!family) return;
var index = member.toLowerCase().indexOf('child') === 0
&& family.find(function(elem) {
return (elem.id === memberID);
}).index;
return member.slice(0, member.length-1) + ' ' + index;
}
family = [
{
"id": 1,
"type": "SELF",
"birthday": "10/10/1980",
"age": 40
},
{
"id": 2,
"type": "CHILD",
"index": 1,
"birthday": "10/10/2001"
},
{
"id": 3,
"type": "SPOUSE",
"birthday": "10101980",
"age": 40
},
{
"id": 4,
"type": "CHILD",
"index": 2,
"birthday": "10102010",
"age": 10
}
]
解决方案
您可以使用一个简单的for
循环。
var idx = -1;
for(var i = 0; i < family.length; i++){
if(family[i].type.toLowerCase() === 'child' && family[i].id === memberID){
idx = i;
break;
}
}
推荐阅读
- angularjs - 如何在上传之前预览 .ai 、 .pdf 格式的图像并在 angularjs 中转换为 base64?
- regex - 如果该行不包含另一个字符串,则使用 sed 将文本插入该行
- ruby-on-rails - 设计:可锁定 - last_attempt_warning 不显示
- vba - 如何遍历指定列中的相同单元格
- android - 权限被拒绝无法获取位置 Android
- python - 将数据写入一行
- expo - 屏幕锁定时捕获图像(从背景)
- regex - notepad++ 正则表达式搜索和替换
- php - 使用 php 获取要在 mysql 上执行的文本
- docker - Docker:更改已创建容器上的端口绑定而不会丢失数据