验证对象的值

时间:2019-04-08 01:36:06

标签: javascript jquery arrays object

我有一个带有键和值的JavaScript对象。 我需要验证该对象的值,如果它包含值“空”,我想发出警报。即使有多个“空”值,我也只发出一次警报。

我这样尝试过

https://hostname/path/libvips-x.y.z-platform.tar.gz

这可以验证该值,但是会发出两次警报。

我只想显示一次警报。 我该怎么办?

4 个答案:

答案 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;
  }
}