gpt4 book ai didi

javascript - 检查是否在 for/in 循环末尾

转载 作者:行者123 更新时间:2023-11-28 12:59:11 26 4
gpt4 key购买 nike

我有一个 for/in 循环,我想知道它是否已结束。我不完全确定这是如何工作的?

我的代码是:

for (const key in posts.val()) {
if(posts.val()[key][postId] != undefined) {
found = true;
//do something
} else {
// if at end && found !== true
}
}

知道如何知道我是否处于 for/in 循环的末尾吗?

谢谢!

最佳答案

没有类似的内置功能。假设调用 .val() 时属性不会发生变化,您可以首先调用 .val() 来获取对象,使用for..in统计出key(包括继承的key)的个数,然后使用for..in再次进行迭代,得到能够测试您距离循环结束有多近:

const val = posts.val();
let totalKeyCount = 0;
for (const _ in posts.val()) {
totalKeyCount++;
}
let keyIndex = 0;
for (const key in posts.val()) {
keyIndex++;
if(val[key][postId] != undefined) {
found = true;
//do something
} else {
if (keyIndex === totalKeyCount) {
console.log('last iteration');
}
}
}

但是,如果您依赖继承的键,那么最好使用Object.keys,它返回一个< em>数组,以及可以使用哪些数组方法。

假设您尝试在对象中(以及对象本身)查找特定值,您可以在 Object.values 上使用 .find 来代替:

const foundPost = Object.values(posts.val()).find(item => item[postId] !== undefined);
// if an item[postId], if it exists, will be truthy, simplify to `item => item[postId]`
if (foundPost) {
// do something with the found post
} else {
// all iterations have been completed, and nothing was found
}

另请注意,for..in 循环中迭代的属性顺序完全可靠。如MDN说:

A for...in loop iterates over the properties of an object in an arbitrary order (see the delete operator for more on why one cannot depend on the seeming orderliness of iteration, at least in a cross-browser setting).

关于javascript - 检查是否在 for/in 循环末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52341333/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com