gpt4 book ai didi

javascript - 如何检查对象中多个数组的数组长度?

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

我有一个函数接受浏览器类型作为对象中的数组作为参数。我想返回一条错误消息,说明用户是否需要任何浏览器。为此,我使用了一个名为 allTypeNumber 的变量。我在下面的代码中用于返回错误。

我想检查每个数组的长度,如果它们都是 0,我知道没有请求浏览器,但不知道如何在不使用变量的情况下做到这一点。

async retrievePartners (capabilities) {
const appropriatePartners = { chrome: [], firefox: [], safari: [], ie: [] }
const partners = await this.getAllPartners()
let allTypeNumber = 0
// first check if there is available appropriate Partners
Object.keys(capabilities.type).forEach(key => {
let typeNumber = parseInt(capabilities.type[key])
allTypeNumber = allTypeNumber + typeNumber
for (let i = 0; i < typeNumber; i++) {
partners.forEach((partner, i) => {
if (
key === partner.value.type &&
partner.value.isAvailable &&
appropriatePartners[key].length < typeNumber
) {
appropriatePartners[key].push(partner)
}
})

if (appropriatePartners[key].length < typeNumber) {
throw new Error(
'Sorry there are no appropriate Partners for this session'
)
}
}
})

if (allTypeNumber === 0) {
throw new Error('Please mention at least 1 type of browser !')

我用这个参数来调用它

const capabilities = { type: { chrome: 1 } }

最佳答案

检查数组的每个值是否都是某物的一种简洁方法是使用every()(或其逆函数,some())。 every() 将循环遍历数组中的每个元素并继续,只要它不断获得返回的真值。 some() 将继续运行,只要它不断出现错误。它们都根据它们最后的返回值返回 truefalse

或者,如果您需要计数(而不是只知道是否至少有一个),您可以使用 reduce() 来创建总和。 reduce() 使用累加器循环遍历数组,适用于从数据数组创建奇异值。

此外,如果您需要从 object 获取值,请使用 Object.entries()Object.values()可以比使用 key 更干净。 Object.entries() 为您提供一个数组数组,其中每个数组都是 [key, value]Object.values() 只是给你一个值数组。

最后,为了确保合作伙伴是合适的,您可以使用 partner.filter() 来过滤好合作伙伴和坏合作伙伴。

将其中一些放在一起,您可以轻松地执行以下操作:

const total = Object.entries(capabilties.type).reduce(([key, type]) => {
typeNumber = parseInt(type);
const good = partners.filter(partner => key === partner.value.type && partner.value.isAvailable && appropriatePartners[key] < typeNumber);

appropriatePartners[key].concat(good);

if (appropriatePartners[key].length < typeNumber) {
throw new Error('No appropriate partners');
}

return typeNumber;
}, 0);

if (total === 0) {
throw new Error('Please mention at least 1 type of browser');
}

当然,这不是唯一合适的。我不知道您的逻辑中的哪些部分很简单,以便您可以跟踪,哪些部分背后有业务逻辑。使用我提到的一些功能,如果您不需要跟踪某些事情,您可能会进一步减少它。

关于javascript - 如何检查对象中多个数组的数组长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49901311/

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