javascript - 如何访问数组内的嵌套对象来验证它?
问题描述
这是我的架构:
detail: [{
quantity: Number,
product:{
name: String,
code: Number,
price: Number
},
subtotal: Number
]}
这是我的验证方法
const validations = values => {
const errors = {
product: {}
}
if(!values.detail ||
!values.detail.length){
errors.detail = {_error: 'at
least one item must be
required'}
}
else{
const detailArrayErrors = []
values.detail.forEach(
(item,itemIndex) =>{
const detailErrors = {}
if(!item || !item.quantity){
detailErrors.quantity
='Required'
detailArrayErrors[itemIndex]=
detailErrors
}
if(!item || !item.subtotal){
detailErrors.subtotal
= 'required'
detailArrayErrors[itemIndex]
= detailErrors
}
//How can I access product
// in validations method
})
if(detailArrayErrors.length)
errors.detail =
detailArrayErrors
}
return errors;
}
export default validations;
产品是我嵌套的 json 对象的详细信息。细节是一个数组。我想验证产品。如何访问数组内的嵌套 json 对象以对其进行验证?
我试过使用 for... of,但它没有结果。
我在网上搜索,但我什么也找不到。
我怎样才能做到这一点?
有谁知道吗?
解决方案
values.detail.forEach(d=> console.log(d.product));
要获取无效数组,例如:
let invalidItems = values.detail.filter(d => !d.product || !d.quantity ||
!d.product.name);
对数组中的每个项目做一些事情:
this.values.detail.forEach(i =>
{
let detailErrors = {'quantity': null, product: null};
if (!i.quantity)
{
detailErrors.quantity= 'Required'
}
if (!i.product)
{
detailErrors.product = 'Required'
}
if (i.product && !i.product.price)
{
detailErrors.product = {'price' :'Required'}
}
});
推荐阅读
- php - 在 Woocommerce 中显示链接的产品属性术语名称
- three.js - 如何使用three.js中的轨迹球控件以编程方式进行缩放、旋转和平移操作?
- c# - 如何使 TabControl.Itemtemplate (TextBlock) 占据全部可用宽度
- typescript - Typescript 中的函数参数和类型
- python - 如何查看“nt”中的所有功能?
- wpf - 用于 WPF 项目的 Visual Studio 2017 中的 HRESULT '8000000A'
- vue.js - Vuetify 从选择中创建变量
- amazon-redshift - 通过 Postgresql 连接器连接到 Azure Data Studio 中的 Amazon Redshift
- lua - Lua 中有没有办法在不使用 io.popen 的情况下列出目录?
- javascript - 在调用渲染函数之前,我可以在哪个 React 生命周期方法中使用 `this`