You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对比JSON数组返回匹配值?无匹配时能否返回false?

对比多组JSON数组获取公共匹配值的问题解答

初始需求

需要对比多组JSON数组,返回所有数组都包含的公共匹配值。示例:

0 : ['cat1', 'cat2']
1 : ['cat2', 'cat3']
2 : ['cat2', 'cat4']

此场景下应返回'cat2',因为它是所有数组的公共元素。

现有代码分析

你找到的这段代码可以实现初始需求:

var result = obj.shift().filter(function(v) {
  return obj.every(function(a) {
    return a.indexOf(v) !== -1;
  });
});

console.log(result);

这段代码逻辑是:取出第一个数组,过滤出其中在剩余所有数组里都存在的元素,最终返回包含所有公共元素的数组。比如初始示例会返回['cat2']。

无公共元素场景的结果

当添加无匹配项的数组(如['cat5'])后,所有数组没有公共元素,此时代码会返回空数组[],而非false。如果需要在无公共元素时返回false,可以在代码末尾增加判断逻辑:

var result = obj.shift().filter(function(v) {
  return obj.every(function(a) {
    return a.indexOf(v) !== -1;
  });
});

// 新增判断,无公共元素时返回false
var finalResult = result.length > 0 ? result : false;
console.log(finalResult);

内容的提问来源于stack exchange,提问作者user1235285

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 01:32:00