如果json对象键在javascript中具有所有相同的值,如何检查并返回true?

Posted

技术标签:

【中文标题】如果json对象键在javascript中具有所有相同的值,如何检查并返回true?【英文标题】:How to check and return true if json object key is having all same values in javascript? 【发布时间】:2021-08-03 01:15:57 【问题描述】:

我有以下示例 JSON 对象:

var data = [ 
  "id" : 1,
  "name" : "Abc",
  "age" : 30,
  "married" : true,
  "city": "ABC"
, 
  "id" : 2,
  "name" : "Def",
  "age" : 25,
  "married" : true,
  "city": "ABC"
, 
  "id" : 3,
  "name" : "Pqr",
  "age" : 28,
  "married" : false,
  "city": "ABC"
, 
  "id" : 4,
  "name" : "Xyz",
  "age" : 40,
  "married" : true,
  "city": "ABC"
 ];

如果所有city 键值仅是ABC,我想返回true 并将其存储在一个变量中,否则它应该返回false(即,如果city 键值之一不是@ 987654328@) 来自给定的JSON 对象。谁能告诉我如何实现这一目标。提前致谢。

【问题讨论】:

使用Array.prototype.every 来测试数组的每个元素是否为真。 【参考方案1】:

使用Array#every:

const data = [  "id" : 1, "name" : "Abc", "age" : 30, "married" : true, "city": "ABC" ,  "id" : 2, "name" : "Def", "age" : 25, "married" : true, "city": "ABC" ,  "id" : 3, "name" : "Pqr", "age" : 28, "married" : false, "city": "ABC" ,  "id" : 4, "name" : "Xyz", "age" : 40, "married" : true, "city": "ABC"  ];

const valid = data.every(( city ) => city === 'ABC');

console.log(valid);

【讨论】:

【参考方案2】:

实现这一目标的三种可能方式:

使用Array#every 使用Array#some 使用Array#filter

let data = [id:1,name:"Abc",age:30,married:!0,city:"ABC",id:2,name:"Def",age:25,married:!0,city:"ABC",id:3,name:"Pqr",age:28,married:!1,city:"ABC",id:4,name:"Xyz",age:40,married:!0,city:"ABC"];

console.log(data.every(( city ) => city === "ABC"));
console.log(!data.some(( city ) => city !== "ABC"));
console.log(!data.filter(( city ) => city !== "ABC").length);

【讨论】:

@Guna 请检查这是否解决了您的问题,如果您有任何问题,请告诉我。 非常感谢您的三种解决方法,都解决了我的问题,非常感谢您的帮助!【参考方案3】:

简单地说:

data.filter(x => x.city === 'ABC')

请在打开主题之前对问题进行更详细的搜索。

【讨论】:

感谢您的回复,但它只会过滤 ABC 值,不会检查每个键。谢谢。【参考方案4】:
data.some((el) => el.city !== "ABC")

【讨论】:

以上是关于如果json对象键在javascript中具有所有相同的值,如何检查并返回true?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以计算每个键在 JSON 列中出现的次数?

通过键在php中重构多维json

将通用JS集合转换为具有特定键和分组值的对象

RestKit 相同对象上的一对一映射,除了

无法从 JavaScript 中的 JSON 文件获取具有日期格式的对象 [重复]

为啥有些字典键在从调试器打印时有引号而另一些没有?