使用lodash函数确定对象中的元素之一是否失败

问题描述

我有一个看起来像对象的数组,

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本机someincludes

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