我有一个带有键和值的JavaScript对象。 我需要验证该对象的值,如果它包含值“空”,我想发出警报。即使有多个“空”值,我也只发出一次警报。
我这样尝试过
https://hostname/path/libvips-x.y.z-platform.tar.gz
这可以验证该值,但是会发出两次警报。
我只想显示一次警报。 我该怎么办?
答案 0 :(得分:4)
使用some
:
const data = [{
first_name: 'John',
last_name: 'Doe'
},
{
first_name: 'Kiki',
last_name: 'empty'
},
{
first_name: 'Kim',
last_name: 'empty'
},
];
if (data.some(e => Object.values(e).some(f => f == "empty"))) {
alert("There is an empty value");
}
如果您还想显示其他数据(例如哪个属性位于哪个索引中),则可以在回调函数中使用其他参数:
const data = [{
first_name: 'John',
last_name: 'Doe'
},
{
first_name: 'Kiki',
last_name: 'empty'
},
{
first_name: 'Kim',
last_name: 'empty'
},
];
if (data.some(e => Object.values(e).some(f => f == "empty"))) {
let index = data.findIndex(e => Object.values(e).some(f => f == "empty"));
let [property] = Object.entries(data[index]).find(([k, v]) => v == "empty");
alert(`The property ${property} at index ${index} is empty.`);
}
答案 1 :(得分:1)
您可以使用函数some
来检查至少一个对象的last_name === 'empty'
const data = [{first_name: 'John',last_name: 'Doe'},{first_name: 'Kiki',last_name: 'empty' },{first_name: 'Kim',last_name: 'empty'}];
// The function some returns true
// if at least one object meets the predicate 'last_name === "empty"'.
if (data.some(({last_name}) => last_name === "empty")) alert("There is an empty value");
答案 2 :(得分:0)
它会两次给您警报,一次是给琪琪,一次是给金妮。如果要在第一次出现后停止循环,则需要将“ return false”更改为“ break”,如下所示:
data.forEach(function(value){
if(value.last_name == 'empty'){
alert('Please fill all the field');
break;
}
});
答案 3 :(得分:0)
我认为在这种情况下循环很方便
let data = [
{first_name: 'John', last_name: 'Doe'},
{first_name: 'Kiki', last_name: 'empty'},
{first_name: 'Kim', last_name: 'empty'},
]
// data.forEach(function(value){
// if(value.last_name == 'empty'){
// alert('Please fill all the field');
// return false;
// }
// });
for(let i of data) {
if(i.last_name == "empty") {
alert('Please fill all the field');
break;
}
}