Javascript 如何正确评估阵列中的重复项?[公共关系]
假设我有两个api调用,它们返回一个对象列表Javascript 如何正确评估阵列中的重复项?[公共关系],javascript,Javascript,假设我有两个api调用,它们返回一个对象列表 const userResult1 = {1: {..} ,2: {..} 3: {..}} const userResult2 = {3: {..} ,4: {..} 5: {..}} 任何一个都可以返回null。我目前正在做的是: if (userResult1 || userResult2 === null) { //false } else { const dataset = [ Object.keys(userResu
const userResult1 = {1: {..} ,2: {..} 3: {..}}
const userResult2 = {3: {..} ,4: {..} 5: {..}}
任何一个都可以返回null。我目前正在做的是:
if (userResult1 || userResult2 === null) {
//false
} else {
const dataset = [
Object.keys(userResult1 ),
Object.keys(userResult2 ),
];
const result = checkIfDuplicateExists(dataset);
console.log(result) //true or false
}
我没有用于抛出无法将未定义或null转换为object
的if语句,但是添加if语句可以防止出现这种情况。这是一个好方法吗?您可以使用
if (userResult1 && userResult2) {
return Object.keys(userResult1).some(
Set.prototype.has,
new Set(Object.keys(userResult2))
);
}
return false;
如果您不确定将要接收的值的类型,则更明智的做法是检查所需的特定数据类型 因为你在等一个对象 做:
if(userResult1 && userResult2) {
return true;
}
return false;
如果userResult1
和userResult2
不是null
和未定义
因此,我建议您使用更方便的方法进行检查,例如,如果您需要一个对象,请使用以下函数测试该值:
function isPlainObject(val) {
return toString.call(val) === '[object Object]'
}
以上仅在普通对象上返回true,例如
{}
如果(userResult1==null | | userResult2==null)
userResult1 | | userResult2==null
意味着“如果userResult1
是真的或userResult2
是null
”这反过来意味着,如果userResult1
为null
,而userResult2
为空,则不进入函数体。如果userResult1
不是null
而userResult2
是,@VLAZ和Jeremy看起来你已经发现了我的错误。我刚刚意识到数据看起来是这样的[[array1],[array2]]如何将所有ID推送到一个新的数组中,使其成为一个平面结构最简单的方法是执行arr.flat()
。如果数组嵌套得更深,则arr.flat(3)
(对于三层深度)或arr.flat(无穷大)
(任意深度)@谢谢你,弗拉兹!刚刚学到了很多新东西,尤其是真理