AngularJS - 一个JSON元素
问题描述:
内部检查值的有效办法,我有一个JSON对象,例如AngularJS - 一个JSON元素
var obj = { a: "sample", b: "sample", c: "sample" };
,我要检查每一个关键,如果他们有相同的价值观。
if(a === b || b === c || c === a){
console.log("Error");
}
有没有更好的方法来检查这些值?任何想法都会有所帮助。谢谢!
答
您可以使用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);
答
您发布的代码将永远不会打印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
性能运行,检查是否所有的人都是平等的,以第一一个 - 这意味着,它们是平等的。
答
从Underscore.js试试这个_.every
every_.every(列表,[谓语],[背景])
返回true如果列表中的所有值传递的谓词真相测验。如果发现错误元素,则短路并停止遍历列表。
_.every([2,4,5],function(num){return num%2 == 0;}); =>假
在乌拉圭回合的情况下ü应在“目标文件”
稍后会尝试这个答案,我会给你一个反馈。谢谢你回答我的问题。祝你有美好的一天! –
我在代码中发现的问题是,如果键a和键b中的值相同,则会输出false。如果在两个或更多个键中具有相同的值,是否可以返回true? –
我编辑了答案 – Faly