问题描述
const test = [{"id": "1","status": "progress"},{"id": "1","status": "book"},"status": "completed"},"status": "done"}]
在这里我想得到的是,如果给定数组中的任何对象的值都为"progress"
和"book"
以外的值,则应返回false,否则应返回true。
我使用以下方式
const issome = _.some(test,item => !_.includes(["progress","book"],item.status))
如何实施?
谢谢。
解决方法
那呢?
_.every(test,item => item.status === "book" || item.status === "progress"))
const test = [{"id": "1","status": "book"},{"id": "1","status": "book"}]
console.log(_.every(test,item => item.status === "book" || item.status === "progress"));
const test1 = [{"id": "1","status": "xxxxx"},"status": "book"}]
console.log(_.every(test1,item => item.status === "book" || item.status === "progress"));
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.20/lodash.min.js"></script>
,
如果可行,这是正确的方法。您将!
放在错误的位置。
您现在正在做的是检查是否有某些项目的成功不等于处理或预订。
我建议不要使用lodash(如果不需要)。
您可以使用JavaScript本机some和includes
const issome = !test.some(item => ['book','progress'].includes(item.status))
,
如果给定数组中的任何对象的值都不是 “ progress”和“ book”应返回false,否则应返回 是
const test = [{"id": "1","status": "progress"},"status": "completed"},"status": "done"}]
const issome = _.every(test,item => _.includes(["progress","book"],item.status))
//issome===false because there are values with status other than "book" or "progress"
const test = [{"id": "1","status": "book"}]
const issome = _.every(test,item.status))
//issome===true because there are values with status "book" or "progress" only