在下面的代码his._notifications
中是一个对象数组,每个对象都包含下面显示的属性。
我要做的是检查是否将传递给函数func()
的每个对象 not 插入到数组中?
所以我正在使用.find()
,并且如果对象已传递给函数或数组中已经存在对象,我希望它返回true
,否则返回false
。
但是下面的日志语句显示undefined
!为什么isExists
未定义?推荐的检查项目是否重复的方法是什么?
代码:
func(noti)
const isExists = this._notifications.find((obj) =>
obj.title === noti.safeTitle
&& obj.text === noti.safeText
&& obj.bannerTitle === noti.safeBannerTitle
&& obj.bannerText === noti.safeBannerText
&& obj.icon === noti.icon
&& obj.onClickCallback === noti.onClickCallback
&& obj.eNotificationType === noti.notificationType
&& obj.deleteable === noti.deletable
&& obj.withBanner === noti.withBanner
);
logger.info('[isNotificationExists] For the current notification: ', JSON.stringify(notification), ' isExists: ', isExists);
答案 0 :(得分:1)
来自MDN
find()方法返回数组中第一个元素的值 满足提供的测试功能。否则未定义是 返回。
includes()方法确定数组是否包含特定数组 元素,并根据情况返回true或false。它使用 sameValueZero算法,用于确定给定元素是否为 找到。
To check if an item is duplicated in array
function hasDuplicates(array) {
return (new Set(array)).size !== array.length;
}
答案 1 :(得分:0)
find()
在这里不是合适的数据结构,因为它的返回类型是找到的元素而不是标志(是否找到了)。您可以为此使用 underscorejs _.contains
函数。