我有一个对象数组,每个对象都有一个状态属性,它可能是通过或失败或跳过。如果对象状态不是“通过”,则我必须设置数组状态失败,而无论数组中的对象数以及状态传递的无关对象。
singleTestMethod=[
{'status':'PASS'},
{'status':'PASS'},
{'status':'FAIL'},
{'status':'SKIPPED'},
'arrayStatus':'']
我希望只有在阵列中的所有对象状态都通过时才将阵列状态设置为通过,否则应将其设置为仅失败。
答案 0 :(得分:0)
我认为您在编写数组时犯了错字,我可以自由地对其进行修复。
由于您的请求不够清晰,我还假设您的结构将始终相同,因此“ arrayStatus”将成为数组的最后一项。
我了解到的是您要检查数组中的所有“状态”值。
如果全部都是“ PASS”,那么“ arrayStatus”也必须变为“ PASS”,否则“ arrayStatus”必须变为“ FAIL”。
如果以上假设正确,请尝试以下代码:
var singleTestMethod=[
{'status':'PASS'},
{'status':'PASS'},
{'status':'FAIL'},
{'status':'SKIPPED'},
{'arrayStatus':''}];
console.log("singleTestMethod array before its check:")
console.log(singleTestMethod);
function setArrayStatus(myArray){
var totalItems = myArray.length - 1;
var totalPass = 0;
myArray.forEach(function(entry) {
if (entry.status === "PASS"){
totalPass++;
}
});
if (totalItems === totalPass){
myArray[myArray.length - 1] = {'arrayStatus': 'PASS'};
} else {
myArray[myArray.length - 1] = {'arrayStatus': 'FAIL'};
}
return myArray;
}
singleTestMethod = setArrayStatus(singleTestMethod);
console.log("singleTestMethod array after its check:")
console.log(singleTestMethod);
答案 1 :(得分:0)
据我了解,您想知道所有对象是否都具有通过状态,否则认为失败了吗?
然后:
const testArr1 = [
{status:'PASS'},
{status:'PASS'},
{status:'FAIL'},
{status:'SKIPPED'},
{arrayStatus:''}]
const testArr2 = [
{status:'PASS'},
{status:'PASS'}]
const checkArray = (testArr) => !testArr.find(each => each.status !== 'PASS')
console.log(checkArray(testArr1)) // false
console.log(checkArray(testArr2)) // true
答案 2 :(得分:0)
感谢您的回答,我已经尝试使用对象过滤器属性来实现它。
var singleTestMethod = [
{'status':'PASS'},
{'status':'FAIL'},
{'status':'SKIPPED'},
{'arrayStatus':''}];
const result = singleTestMethod.filter(singleTestMethod =>
singleTestMethod.status === 'FAIL' || singleTestMethod.status === 'SKIPPED');
console.log(result);
if(result.length == 0){
singleTestMethod.arrayStatus = 'PASS';
}else{
singleTestMethod.arrayStatus = 'FAIL';
}
console.log( singleTestMethod.arrayStatus);