AngularJS - 检查json元素内部值的有效方法

时间:2017-10-09 05:51:51

标签: angularjs json if-statement conditional

我有一个json对象示例

var obj = { a: "sample", b: "sample", c: "sample" };

我希望检查每个密钥是否具有相同的值。

if(a === b || b === c || c === a){ 
  console.log("Error");
}

有没有更好的方法来检查这些值?任何想法都会有所帮助。谢谢!

3 个答案:

答案 0 :(得分:1)

您发布的代码永远不会打印Error

您正在引用不存在的值。

修复此问题:

if(obj.a === obj.b || obj.b === obj.c || obj.c === obj.a){ 
  console.log("Error");
}

你也可以这样做:

var firstObj = '';
var i = 0;
var areDifferent = false;
for var prop in obj {
  if (i == 0){ 
     firstObj = obj[property]
  }
  if (firstObj != obj[property]){
    areDifferent = true;
  }
  i++;
}

if (areDifferent){
 //your code here
}

上面的代码将遍历所有obj属性,以检查它们是否都与第一个属性相同 - 这意味着它们是相同的。

答案 1 :(得分:1)

您可以使用Object.keys和array.every并将所有值与第一个值进行比较:



var obj = { a: "sample", b: "sample", c: "sample" };
var keys = Object.keys(obj);
var first = obj[keys[0]]
var sameValue = keys.every(key => obj[key] === first);
console.log(sameValue);




编辑:

如果您希望在至少两个属性具有相同值时返回true:



var obj = { a: "sample", b: "saxmple", c: "sample" };
var keys = Object.keys(obj);
var sameValue = keys.some((key, index) => keys.some((otherKey, otherIndex) => obj[key] === obj[otherKey] && index !== otherIndex));
console.log(sameValue);




答案 2 :(得分:-1)

从Underscore.js

尝试 _。每次

every_.every(list,[predicate],[context])

如果列表中的所有值都通过谓词真值测试,则返回true。如果找到错误元素,则短路并停止遍历列表。

_。every([2,4,5],function(num){return num%2 == 0;}); =>假

在你的情况下你应该用“obj”中的所有下一个元素检查“obj”的第一个元素的值