Javascript 如何检查不可变映射的所有键是否都有值
如何验证所有键是否都有值? p、 s:我有以下要求Javascript 如何检查不可变映射的所有键是否都有值,javascript,reactjs,functional-programming,immutable.js,Javascript,Reactjs,Functional Programming,Immutable.js,如何验证所有键是否都有值? p、 s:我有以下要求 imageName和密码应至少包含一个字符 标记应至少包含一项 您可以使用javascript库使用预定义的模式更新值。或者,您可以编写一个函数,返回不符合要求的对象的键 自定义JS方法 const [fieldValues, updateFieldValues] = useState(fromJS({ imageName: '', tags: [], password: '', })); const handle
const [fieldValues, updateFieldValues] = useState(fromJS({
imageName: '',
tags: [],
password: '',
}));
const handleButtonClick = () => {
const res = // logic to find which field/fields are empty
}
function validateObj(obj) {
let isValid = true;
const errorKeys = [];
Object.entries(obj).forEach(([key, value]) =>{
if(!value) {
errorKeys.push(key)
isValid = false;
return;
}
if(Array.isArray(value)) {
if(!value?.length) {
errorKeys.push(key)
isValid = false;
return;
}
}
})
return { isValid, errorKeys }
}
不可变JS方法
const [fieldValues, updateFieldValues] = useState(fromJS({
imageName: '',
tags: [],
password: '',
}));
const handleButtonClick = () => {
const res = // logic to find which field/fields are empty
}
function validateObj(obj) {
let isValid = true;
const errorKeys = [];
Object.entries(obj).forEach(([key, value]) =>{
if(!value) {
errorKeys.push(key)
isValid = false;
return;
}
if(Array.isArray(value)) {
if(!value?.length) {
errorKeys.push(key)
isValid = false;
return;
}
}
})
return { isValid, errorKeys }
}
用法:
function validateObj(obj) {
let isValid = true;
const errorKeys = [];
console.log(obj)
obj.mapEntries(([key, value]) =>{
console.log(key, value)
if(!value) {
errorKeys.push(key)
isValid = false;
return;
}
if(List.isList(value)) {
if(!value.size) {
errorKeys.push(key)
isValid = false;
return;
}
}
})
return { isValid, errorKeys }
}
如有任何问题/疑问,请随时联系
编辑:不可变的.js集合,因此您可以使用
来。。。的
和其他常见交互。它还提供了许多查看数据的方法,如forEach、find、findKey、findValue、filter
。看看这些,它们很好。下面可以看到几个例子:
const thing=Immutable.fromJS({
香蕉:“鳞片”,
图像名称:“”,
标签:[],
密码:“”,
});
对于事物的([键,值]){
log('for of',key',:',val);
}
thing.forEach((key,val)=>{
log('forEach',key',:',val);
});
const firstItemIdoNotLike=thing.findKey((key,val)=>{
如果(!!val){
返回true;
}
if(val.hasOwnProperty('length')){
返回值长度<1;
}
返回false;
});
if(firstItemIdoNotLike){
log('validation error on',firstItemIdoNotLike);
}
@Sumanth Madishetty你好。我非常感谢您的宝贵反馈,但实际上我正在React.js项目中使用一个名为immutable.js的库@Noobbokhon要使用不可变JS更新答案,您可以对字符串和数组使用length
属性<代码>[]长度==0和“”。长度==0
。至少包含一个字符或元素的字符串或数组的长度将大于零