在控制台中查找对象 属性。语法问题
Looking up an object property within the console. Syntax issue
我正在使用对象编写一个比较函数。我知道如果我有以下对象 - var obj{ one: "foo", two: bar"} 并且我想查找 属性 然后 obj["one"] 会工作但是obj[one] 不会。
然而,当我执行比较功能时,它会正确地比较 obj["one"] 和 obj2["one"],但是当我试图在控制台中记录它时,语法 obj[ one] 工作并且 obj["one"] 返回为未定义。它不影响代码的功能,但我很困惑。
var num = 2;
var num2 = 4;
var num3 = 4;
var num4 = 9;
var num5 = "4";
var obj = {here: {is: "an"}, object: 2};
var obj2 = {here: {is: "an"}, object: 2};
function deepEqual(el, el2) {
var outcome = false;
console.log("comparing " + el + " and " + el2);
if (typeof el == 'object' && typeof el2 == 'object') {
console.log("These are both objects");
if (Object.keys(el).length === Object.keys(el2).length) {
console.log("These objects have the same number of keys");
for (var x in el) {
if (el2.hasOwnProperty(x) && el["x"] === el2["x"]) {
console.log("comparing " + el[x] + " with " + el2[x]);
outcome = true;
} else {
return false;
}
}
} else return false;
} else if (el === el2) {
outcome = true;
}
return outcome;
}
所以我说的那部分代码是
if (el2.hasOwnProperty(x) && el["x"] === el2["x"]) {
console.log("comparing " + el[x] + " with " + el2[x]);
outcome = true;
} else {
return false;
}
这在控制台中正确返回为 "comparing (property) with (property)"。但是如果我这样写
if (el2.hasOwnProperty(x) && el["x"] === el2["x"]) {
console.log("comparing " + el["x"] + " with " + el2["x"]);
outcome = true;
} else {
return false;
}
它说 "comparing undefined with undefined"。
有什么见解吗?
在您的代码中 el["x"] 没有引用任何内容。在具有 "x" 键
的 el 对象中没有 属性
您处于定义 x 的 for 循环中,因此您需要使用该变量而不是 "x"
for (var x in el) {
if (el2.hasOwnProperty(x) && el[x] === el2[x]) {
console.log("comparing " + el[x] + " with " + el2[x]);
outcome = true;
} else {
return false;
}
}
我正在使用对象编写一个比较函数。我知道如果我有以下对象 - var obj{ one: "foo", two: bar"} 并且我想查找 属性 然后 obj["one"] 会工作但是obj[one] 不会。
然而,当我执行比较功能时,它会正确地比较 obj["one"] 和 obj2["one"],但是当我试图在控制台中记录它时,语法 obj[ one] 工作并且 obj["one"] 返回为未定义。它不影响代码的功能,但我很困惑。
var num = 2;
var num2 = 4;
var num3 = 4;
var num4 = 9;
var num5 = "4";
var obj = {here: {is: "an"}, object: 2};
var obj2 = {here: {is: "an"}, object: 2};
function deepEqual(el, el2) {
var outcome = false;
console.log("comparing " + el + " and " + el2);
if (typeof el == 'object' && typeof el2 == 'object') {
console.log("These are both objects");
if (Object.keys(el).length === Object.keys(el2).length) {
console.log("These objects have the same number of keys");
for (var x in el) {
if (el2.hasOwnProperty(x) && el["x"] === el2["x"]) {
console.log("comparing " + el[x] + " with " + el2[x]);
outcome = true;
} else {
return false;
}
}
} else return false;
} else if (el === el2) {
outcome = true;
}
return outcome;
}
所以我说的那部分代码是
if (el2.hasOwnProperty(x) && el["x"] === el2["x"]) {
console.log("comparing " + el[x] + " with " + el2[x]);
outcome = true;
} else {
return false;
}
这在控制台中正确返回为 "comparing (property) with (property)"。但是如果我这样写
if (el2.hasOwnProperty(x) && el["x"] === el2["x"]) {
console.log("comparing " + el["x"] + " with " + el2["x"]);
outcome = true;
} else {
return false;
}
它说 "comparing undefined with undefined"。 有什么见解吗?
在您的代码中 el["x"] 没有引用任何内容。在具有 "x" 键
的 el 对象中没有 属性您处于定义 x 的 for 循环中,因此您需要使用该变量而不是 "x"
for (var x in el) {
if (el2.hasOwnProperty(x) && el[x] === el2[x]) {
console.log("comparing " + el[x] + " with " + el2[x]);
outcome = true;
} else {
return false;
}
}