诸如数组之类的对象的验证规则

发布于 2025-01-24 02:23:50 字数 1344 浏览 2 评论 0原文

我一直在遇到问题。 我要做的是为我的数据添加一些验证规则。 数据的示例如下写。

const data = [
    { name: 'Benz', class: 'Car', grade: 'A', isDefault: true },
    { name: 'BMW', class: 'Car', grade: 'B', isDefault: true },
    { name: 'Ford', class: 'Car', grade: 'C', isDefault: true },
    { name: 'Hyundai', class: 'Car', grade: 'C', isDefault: true },
    { name: 'Kia', class: 'Car', grade: 'C', isDefault: true },
    { name: 'Mustang', class: 'Car', grade: 'D', isDefault: true },
    { name: 'Zeep', class: 'Car', grade: 'E', isDefault: true },
    { name: 'Andy', class: 'Boat', grade: 'A', isDefault: true },
    { name: 'Tommy', class: 'Boat', grade: 'B', isDefault: true },
    { name: 'Judy', class: 'Boat', grade: 'C', isDefault: true },
    { name: 'John', class: 'Boat', grade: 'D', isDefault: true },
    { name: 'James', class: 'Boat', grade: 'E', isDefault: false },
    { name: 'Romio', class: 'Boat', grade: 'F', isDefault: false },
    { name: 'Michael', class: 'Boat', grade: 'F', isDefault: false },
    { name: 'Ron', class: 'Boat', grade: 'F', isDefault: false },
]

[介绍规则]

如果“类”和“ Grande”相同,则必须具有一个默认值(isDefault = true),但是默认值不能超过1个,

也许很难理解此规则。 假设现代的案子。 现代可以默认“汽车”和“ C”等级的值。但是,在类“汽车”中还有另一个默认值“福特”和“起亚”&&等级“ C”。 因此,验证的结果是失败。

假设上课的“船”&& 'F'级案例。 没有分配此情况的默认值。 因此,验证的结果是失败。

先感谢您。

I have been suffering from an issue.
What I want to do is adding some validation rule for my data.
The example of data is written below.

const data = [
    { name: 'Benz', class: 'Car', grade: 'A', isDefault: true },
    { name: 'BMW', class: 'Car', grade: 'B', isDefault: true },
    { name: 'Ford', class: 'Car', grade: 'C', isDefault: true },
    { name: 'Hyundai', class: 'Car', grade: 'C', isDefault: true },
    { name: 'Kia', class: 'Car', grade: 'C', isDefault: true },
    { name: 'Mustang', class: 'Car', grade: 'D', isDefault: true },
    { name: 'Zeep', class: 'Car', grade: 'E', isDefault: true },
    { name: 'Andy', class: 'Boat', grade: 'A', isDefault: true },
    { name: 'Tommy', class: 'Boat', grade: 'B', isDefault: true },
    { name: 'Judy', class: 'Boat', grade: 'C', isDefault: true },
    { name: 'John', class: 'Boat', grade: 'D', isDefault: true },
    { name: 'James', class: 'Boat', grade: 'E', isDefault: false },
    { name: 'Romio', class: 'Boat', grade: 'F', isDefault: false },
    { name: 'Michael', class: 'Boat', grade: 'F', isDefault: false },
    { name: 'Ron', class: 'Boat', grade: 'F', isDefault: false },
]

[ Valiation Rule ]

If 'class' and 'grande' are same, it must have one default value (isDefault = true), but default value can not over 1

Maybe it'll be hard to understand this rule.
Let's say, Hyundai's case.
Hyundai can default value of class 'Car' and grade 'C'. But there are another default value 'Ford' and 'Kia' in class 'Car' && grade 'C'.
So, the result of validation is fail.

Let's say class 'Boat' && grade 'F' case.
There are no default value that assigned this case.
So, the result of validation is fail.

Thank you in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

等风来 2025-01-31 02:23:50

以下是实现目标的一种可能方法。

代码片段

// method to validate given class-grade combination
const myValidate = (pClass, pGrade, arr) => {
  // first determine if any data matches the class-grade combination
  const filterData = arr.filter(
    obj => (
      obj.class === pClass &&
      obj.grade === pGrade
    )
  );
  // if yes (ie, class-grade combination exists),
  if (filterData.length > 0) {
    // count how many "isDefault" with value "true" exists
    const defaultTrueCount = filterData.filter(({ isDefault }) => !!isDefault).length;
    // if exactly 1 "isDefault" with value "true", then test "pass"-ed
    // else, "fail"-ed
    if (defaultTrueCount === 1) return 'Pass'
    else return 'Fail';
  } else {
    // no data matched - so case is neither pass nor fail
    return `class: ${pClass} and grade: ${pGrade} combination not found in data`;
  }
};

const data = [
    { name: 'Benz', class: 'Car', grade: 'A', isDefault: true },
    { name: 'BMW', class: 'Car', grade: 'B', isDefault: true },
    { name: 'Ford', class: 'Car', grade: 'C', isDefault: true },
    { name: 'Hyundai', class: 'Car', grade: 'C', isDefault: true },
    { name: 'Kia', class: 'Car', grade: 'C', isDefault: true },
    { name: 'Mustang', class: 'Car', grade: 'D', isDefault: true },
    { name: 'Zeep', class: 'Car', grade: 'E', isDefault: true },
    { name: 'Andy', class: 'Boat', grade: 'A', isDefault: true },
    { name: 'Tommy', class: 'Boat', grade: 'B', isDefault: true },
    { name: 'Judy', class: 'Boat', grade: 'C', isDefault: true },
    { name: 'John', class: 'Boat', grade: 'D', isDefault: true },
    { name: 'James', class: 'Boat', grade: 'E', isDefault: false },
    { name: 'Romio', class: 'Boat', grade: 'F', isDefault: false },
    { name: 'Michael', class: 'Boat', grade: 'F', isDefault: false },
    { name: 'Ron', class: 'Boat', grade: 'F', isDefault: false },
];

console.log('validate class: Car, grade: C | result: ', myValidate('Car', 'C', data));
console.log('validate class: Boat, grade: F | result: ', myValidate('Boat', 'F', data));
console.log('validate class: Car, grade: A | result: ', myValidate('Car', 'A', data));
.as-console-wrapper { max-height: 100% !important; top: 0 }

说明

上面摘要中添加的内联评论。

Below is one possible way to achieve the target.

Code Snippet

// method to validate given class-grade combination
const myValidate = (pClass, pGrade, arr) => {
  // first determine if any data matches the class-grade combination
  const filterData = arr.filter(
    obj => (
      obj.class === pClass &&
      obj.grade === pGrade
    )
  );
  // if yes (ie, class-grade combination exists),
  if (filterData.length > 0) {
    // count how many "isDefault" with value "true" exists
    const defaultTrueCount = filterData.filter(({ isDefault }) => !!isDefault).length;
    // if exactly 1 "isDefault" with value "true", then test "pass"-ed
    // else, "fail"-ed
    if (defaultTrueCount === 1) return 'Pass'
    else return 'Fail';
  } else {
    // no data matched - so case is neither pass nor fail
    return `class: ${pClass} and grade: ${pGrade} combination not found in data`;
  }
};

const data = [
    { name: 'Benz', class: 'Car', grade: 'A', isDefault: true },
    { name: 'BMW', class: 'Car', grade: 'B', isDefault: true },
    { name: 'Ford', class: 'Car', grade: 'C', isDefault: true },
    { name: 'Hyundai', class: 'Car', grade: 'C', isDefault: true },
    { name: 'Kia', class: 'Car', grade: 'C', isDefault: true },
    { name: 'Mustang', class: 'Car', grade: 'D', isDefault: true },
    { name: 'Zeep', class: 'Car', grade: 'E', isDefault: true },
    { name: 'Andy', class: 'Boat', grade: 'A', isDefault: true },
    { name: 'Tommy', class: 'Boat', grade: 'B', isDefault: true },
    { name: 'Judy', class: 'Boat', grade: 'C', isDefault: true },
    { name: 'John', class: 'Boat', grade: 'D', isDefault: true },
    { name: 'James', class: 'Boat', grade: 'E', isDefault: false },
    { name: 'Romio', class: 'Boat', grade: 'F', isDefault: false },
    { name: 'Michael', class: 'Boat', grade: 'F', isDefault: false },
    { name: 'Ron', class: 'Boat', grade: 'F', isDefault: false },
];

console.log('validate class: Car, grade: C | result: ', myValidate('Car', 'C', data));
console.log('validate class: Boat, grade: F | result: ', myValidate('Boat', 'F', data));
console.log('validate class: Car, grade: A | result: ', myValidate('Car', 'A', data));
.as-console-wrapper { max-height: 100% !important; top: 0 }

Explanation

Inline comments added in the snippet above.

指尖上得阳光 2025-01-31 02:23:50

你的意思是那样吗? (类首字母== grape => isdefault:true; class first Letter!= grape => isdefault:false

const data = [{ name: 'Benz', class: 'Car', grade: 'A', isDefault: true },{ name: 'BMW', class: 'Car', grade: 'B', isDefault: true },{ name: 'Ford', class: 'Car', grade: 'C', isDefault: true },{ name: 'Hyundai', class: 'Car', grade: 'C', isDefault: true },{ name: 'Kia', class: 'Car', grade: 'C', isDefault: true },{ name: 'Mustang', class: 'Car', grade: 'D', isDefault: true },{ name: 'Zeep', class: 'Car', grade: 'E', isDefault: true },{ name: 'Andy', class: 'Boat', grade: 'A', isDefault: true },{ name: 'Tommy', class: 'Boat', grade: 'B', isDefault: true },{ name: 'Judy', class: 'Boat', grade: 'C', isDefault: true },{ name: 'John', class: 'Boat', grade: 'D', isDefault: true },{ name: 'James', class: 'Boat', grade: 'E', isDefault: false }, { name: 'Romio', class: 'Boat', grade: 'F', isDefault: false },{ name: 'Michael', class: 'Boat', grade: 'F', isDefault: false },{ name: 'Ron', class: 'Boat', grade: 'F', isDefault: false }]
for(let elem of data) {elem.isDefault=(elem.class[0]==elem.grade)}
console.log(data)

You meant something like that? (class first letter == grape => isDefault:true ; class first letter != grape => isDefault:false)

const data = [{ name: 'Benz', class: 'Car', grade: 'A', isDefault: true },{ name: 'BMW', class: 'Car', grade: 'B', isDefault: true },{ name: 'Ford', class: 'Car', grade: 'C', isDefault: true },{ name: 'Hyundai', class: 'Car', grade: 'C', isDefault: true },{ name: 'Kia', class: 'Car', grade: 'C', isDefault: true },{ name: 'Mustang', class: 'Car', grade: 'D', isDefault: true },{ name: 'Zeep', class: 'Car', grade: 'E', isDefault: true },{ name: 'Andy', class: 'Boat', grade: 'A', isDefault: true },{ name: 'Tommy', class: 'Boat', grade: 'B', isDefault: true },{ name: 'Judy', class: 'Boat', grade: 'C', isDefault: true },{ name: 'John', class: 'Boat', grade: 'D', isDefault: true },{ name: 'James', class: 'Boat', grade: 'E', isDefault: false }, { name: 'Romio', class: 'Boat', grade: 'F', isDefault: false },{ name: 'Michael', class: 'Boat', grade: 'F', isDefault: false },{ name: 'Ron', class: 'Boat', grade: 'F', isDefault: false }]
for(let elem of data) {elem.isDefault=(elem.class[0]==elem.grade)}
console.log(data)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文