AngularJS - 检查 json 元素内值的有效方法
AngularJS - Efficient way of checking values inside a json element
我有一个 json 对象示例
var obj = { a: "sample", b: "sample", c: "sample" };
我想检查每个键是否具有相同的值。
if(a === b || b === c || c === a){
console.log("Error");
}
是否有更好的方法来检查这些值?任何想法都会有所帮助。谢谢!
您发布的代码将永远不会打印 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
属性,检查它们是否都等于第一个 - 这意味着它们是否相等。
试试 _.every 来自 Underscore.js
每个_.every(列表,[谓词],[上下文])
Returns 如果列表中的所有值都通过谓词真值测试,则为真。如果发现错误元素,则短路并停止遍历列表。
_.every([2, 4, 5], 函数(num) { return num % 2 == 0; });
=> 错误
在你的情况下,你应该检查 "obj" 的第一个元素的值和 "obj"
中的所有下一个元素
您可以使用 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);
编辑:
如果您想要 return 如果至少有两个属性具有相同的值则为真:
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);
我有一个 json 对象示例
var obj = { a: "sample", b: "sample", c: "sample" };
我想检查每个键是否具有相同的值。
if(a === b || b === c || c === a){
console.log("Error");
}
是否有更好的方法来检查这些值?任何想法都会有所帮助。谢谢!
您发布的代码将永远不会打印 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
属性,检查它们是否都等于第一个 - 这意味着它们是否相等。
试试 _.every 来自 Underscore.js
每个_.every(列表,[谓词],[上下文])
Returns 如果列表中的所有值都通过谓词真值测试,则为真。如果发现错误元素,则短路并停止遍历列表。
_.every([2, 4, 5], 函数(num) { return num % 2 == 0; }); => 错误
在你的情况下,你应该检查 "obj" 的第一个元素的值和 "obj"
中的所有下一个元素您可以使用 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);
编辑:
如果您想要 return 如果至少有两个属性具有相同的值则为真:
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);