3 回答
TA贡献1876条经验 获得超7个赞
实际上,它似乎有效,我知道问题所在,您希望exists返回一些内容,但它返回未定义的内容,您没有从 中返回任何内容exists,您应该返回DO_BULK_INSERT以查看您的解决方案是否有效。
让我们谈谈在可读性和类型检查方面您是如何处理的
让我们同意这里存在类型检查错误,我们正在检查元素是否为负(数字)或空(字符串)。这在 TS 方面应该是固定的,但是,如果没有,它应该可以工作(毕竟是 JavaScript)
我会做类似的事情
function exists(array) {
function isNegative(x) {
return x >= 0;
}
function isEmptyString(x) {
return x === '';
}
return array.some(element => {
if (element.type === 'static') {
return [element.low, element.mid, element.high].some(prop =>
typeof prop === 'string' ? isEmptyString(prop) : isNegative(prop)
);
}
else {
return "WHATEVER"
}
});
}
不管怎样,你的代码很好,它只是没有返回任何内容。
TA贡献1825条经验 获得超6个赞
const datas = [{ name: "alpha.keyword#acre-access-reviews-dev|cpu.usage.limit.pct#avg", entity: "alpha.keyword#acre-access-reviews-dev|cpu.usage.limit.pct#avg", type: "static", mid: "1", low: "3", high: "2", }];
const mustSend = datas.every( ({type, high, mid, low }) => type !== 'static' || ( parseInt(high) >= 0 && parseInt(mid) >= 0 && parseInt(low) >= 0 ) );
console.log("Must send?", mustSend);
TA贡献1946条经验 获得超3个赞
查看您的代码,DO_BULK_INSERT即使其中一个元素通过了条件,结果也会成立。下面应该适合你。
exists(array: any[]) {
let STOP_BULK_INSERT = array.some(element => {
if (
element["type"] === "static" &&
(element["mid"] === "" ||
element["low"] === "" ||
element["high"] === "" ||
element["mid"] < 0 ||
element["low"] < 0 ||
element["high"] < 0)
) {
console.log("element = ", element);
return true;
} else {
return false;
}
});
console.log("STOP_BULK_INSERT = ", STOP_BULK_INSERT);
if (STOP_BULK_INSERT) {
console.log("STOP BULK INSERT");
} else {
console.log("DO NOT STOP_BULK_INSERT");
}
}
}
添加回答
举报