gpt4 book ai didi

Javascript 通用 For 循环

转载 作者:行者123 更新时间:2023-11-29 19:14:24 25 4
gpt4 key购买 nike

有没有什么方法可以创建一个通用的 for 循环,它可以正确地循环遍历数组或对象?我知道我可以编写以下 for 循环,但它也会遍历将添加到数组的其他属性。

for (item in x) {
console.log(item)
}

我指的是将迭代的 for 循环:

x = [1, 2]
x.foo = "foo"
y = {first:1, second: 2}

x 为

1
2

作为

first
second

这背后的原因是直到运行时我才知道 x 是什么(数组或对象)。创建一个将在运行时检查的函数是我唯一的选择吗?

最佳答案

使用 for..of loop .

遍历数组

const array = [1, 2];
array.foo = "test";
for (const number of array) {
console.log(number); // skips array.foo
}

遍历对象

const object = {
some: "string",
number: 42
};
for (const [key, value] of Object.entries(object)) {
console.log(key, value);
}

无论如何,从代码风格的 Angular 来看,您仍然应该在迭代之前检查您的对象是否为数组。您可以使用 Array.isArray实现这一目标。所以,假设 data是对象或数组:

if (Array.isArray(data)) {
for (const element of data) {
// Iterate over array
}
}
else {
for (const [key, value] of Object.entries(data)) {
// Iterate over object
}
}

通用循环

因为在 JavaScript 中,typeof [] === "object" (即数组是使用元素索引作为其键的对象),您可以使用 Object.entries 将其缩减为单循环 :

for (const [key, value] of Object.entries(data)) {
// For arrays, `key` will be the index
}

请注意,后一种方法不会公正地排除动态属性(例如 array.foo ),因为您将迭代 Object.entries 的结果。 .如果您确实需要进行此排除,请使用两个 for..ofArray.isArray 循环如上所示。

关于Javascript 通用 For 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36512206/

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