Javascript 如果找不到值,如何停止循环?

Javascript 如果找不到值,如何停止循环?,javascript,foreach,Javascript,Foreach,1-如果在variationsDB数组中找不到“grid_id”,我需要停止循环并返回错误 2-如果找到,它将获取“variation_id”,并检查variations数组中是否存在它 const grids = [{ "grid_id": 1 }, { "grid_id": 2 }] const variationsDB = [ { "variation_id": 3, "grid

1-如果在variationsDB数组中找不到“grid_id”,我需要停止循环并返回错误

2-如果找到,它将获取“variation_id”,并检查variations数组中是否存在它

const grids = [{ "grid_id": 1 }, { "grid_id": 2 }]

const variationsDB = [
    {
        "variation_id": 3,
        "grid_id": 1
    },
    {
        "variation_id": 7,
        "grid_id": 2
    }
]

const variations = [{ "variation_id": 3 }, { "variation_id": 7 }]

const filter = (a, b, key) => {
    const array = []

    a.forEach((x) => {
        b.forEach((y) => {
            if (x[key] === y[key]) {
                array.push(y)
            }
        })
    })

    return array
}

const filterA = filter(grids, variationsDB, 'grid_id')
const filterB = filter(filterA, variations, 'variation_id')

console.log(filterB)
// [{ "variation_id": 3 }, { "variation_id": 7 }]
在第二种情况下,如果在variances数组中找不到“variances_id”,我还需要停止循环并返回一个错误

const grids = [{ "grid_id": 1 }, { "grid_id": 2 }]

const variationsDB = [
    {
        "variation_id": 3,
        "grid_id": 1
    },
    {
        "variation_id": 7,
        "grid_id": 2
    }
]

const variations = [{ "variation_id": 3 }, { "variation_id": 7 }]

const filter = (a, b, key) => {
    const array = []

    a.forEach((x) => {
        b.forEach((y) => {
            if (x[key] === y[key]) {
                array.push(y)
            }
        })
    })

    return array
}

const filterA = filter(grids, variationsDB, 'grid_id')
const filterB = filter(filterA, variations, 'variation_id')

console.log(filterB)
// [{ "variation_id": 3 }, { "variation_id": 7 }]

只要检查结果数组是否为空就足够了:

const filterA = filter(grids, variationsDB, 'grid_id')
if (!filterA.length) {
    throw new Error('No matches found for grid_id');
}
const filterB = filter(filterA, variations, 'variation_id')
if (!filterB.length) {
    throw new Error('No matches found for variation_id');
}
console.log(filterB)
通过首先将第一个项目数组组织为一组值,可以将代码的计算复杂度从
O(n^2)
降低到
O(n)

const grids=[{“grid_id”:1},{“grid_id”:2}]
常量变量SDB=[
{
“变更id”:3,
“网格id”:1
},
{
“变更id”:7,
“网格id”:2
}
]
常量变量=[{“变量id”:3},{“变量id”:7}]
常量验证=(a、b、键)=>{
const aValues=新集合(a.map(aItem=>aItem[key]);
用于(b的常数){
如果(!aValues.has(bItem[key])){
抛出新错误('未找到',key,bItem[key]);
}
}
}
验证(网格、变量DB、“网格id”)
验证(变量SDB、变量“变量id”)

console.log(变体)
只要检查生成的数组是否为空就足够了:

const filterA = filter(grids, variationsDB, 'grid_id')
if (!filterA.length) {
    throw new Error('No matches found for grid_id');
}
const filterB = filter(filterA, variations, 'variation_id')
if (!filterB.length) {
    throw new Error('No matches found for variation_id');
}
console.log(filterB)
通过首先将第一个项目数组组织为一组值,可以将代码的计算复杂度从
O(n^2)
降低到
O(n)

const grids=[{“grid_id”:1},{“grid_id”:2}]
常量变量SDB=[
{
“变更id”:3,
“网格id”:1
},
{
“变更id”:7,
“网格id”:2
}
]
常量变量=[{“变量id”:3},{“变量id”:7}]
常量验证=(a、b、键)=>{
const aValues=新集合(a.map(aItem=>aItem[key]);
用于(b的常数){
如果(!aValues.has(bItem[key])){
抛出新错误('未找到',key,bItem[key]);
}
}
}
验证(网格、变量DB、“网格id”)
验证(变量SDB、变量“变量id”)

console.log(variations)
我在这里做了一个快速测试,当在下一个数组(variations)中找不到数组中的一个项(variationsDB)时,没有返回错误。哦,您想检查所有值是否存在,而不是至少存在一个值?Simple Enough如果这些值中至少有一个不存在,则返回错误。。。步骤1(阵列栅格)。。。步骤2(数组变量SDB)。。。步骤3(阵列变体)。按此顺序,“网格”数组的值始终存在哈哈哈。此检查将位于其他两个阵列中。您必须始终将某个内容与其他内容进行比较-因此其
网格
变量SDB
,然后将
变量SDB
变量
。所以有两个验证步骤。我在这里做了一个快速测试,当数组中的一个项目(variationsDB)在下一个数组(variations)中找不到时,没有返回错误。哦,您想检查所有值是否存在,而不是至少存在一个值?Simple Enough如果这些值中至少有一个不存在,则返回错误。。。步骤1(阵列栅格)。。。步骤2(数组变量SDB)。。。步骤3(阵列变体)。按此顺序,“网格”数组的值始终存在哈哈哈。此检查将位于其他两个阵列中。您必须始终将某个内容与其他内容进行比较-因此其
网格
变量SDB
,然后将
变量SDB
变量
。因此,需要两个验证步骤。