Javascript 如果找不到值,如何停止循环?
1-如果在variationsDB数组中找不到“grid_id”,我需要停止循环并返回错误 2-如果找到,它将获取“variation_id”,并检查variations数组中是否存在它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
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
与变量
。因此,需要两个验证步骤。