手写loadsh函数的第二天
<script>
var users = [
{ user: "barney", active: false },
{ user: "fred", active: false },
{ user: "pebbles", active: true },
];
// 定义一个函数用于查找对象在数组中的索引
function findIndex(array, obj) {
let i; // 存储找到的索引值
if (Array.isArray(obj)) {
// 如果传入的 obj 是数组
array.some((item, index) => {
for (const key in item) {
if (key == obj[0] && item[key] == obj[1]) {
i = index; // 将找到的索引赋值给 i
return true; // 终止循环
}
}
});
} else if (typeof obj == "string") {
// 如果传入的 obj 是字符串
array.some((item, index) => {
for (const key in item) {
if (key == obj) {
i = index; // 将找到的索引赋值给 i
return true; // 终止循环
}
}
});
} else {
// 如果传入的 obj 是对象
array.forEach((item, index) => {
let flag = true; // 标记是否匹配所有属性
for (const key in item) {
if (obj[key] != item[key]) {
flag = false; // 如果属性值不匹配,标记为 false
break; // 跳出循环
}
}
if (flag) {
i = index; // 如果所有属性匹配,将索引赋值给 i
}
});
}
return i; // 返回找到的索引值
}
console.log(findIndex(users, "active")); // 输出属性为 "active" 的对象在数组中的索引
</script>