這是我的第一篇文章,我已經研究過,但我不確定我在搜索中正確地表達了這個問題。Object.keys返回不等於
我試圖比較一個對象的鍵與另一個對象中的鍵(這是freeCodeCamp算法)。我的代碼如下:
function whereAreYou(collection, source) {
var arr = [];
for (var i=0;i<collection.length;i++) {
console.log("Object.keys(source)= " + Object.keys(source));
console.log("Object.keys(collection[" +i + "]))= " + Object.keys(collection[i]));
console.log("collection[" +i + "].hasOwnProperty(Object.keys(source))= " + collection[i].hasOwnProperty(Object.keys(source)));
if (collection[i].hasOwnProperty(Object.keys(source))) {
var prop = Object.keys(source);
console.log("prop=" + prop);
console.log("collection[" +i + "][prop]= " + collection[i][prop]);
console.log("source[prop]= " + source[prop]);
if (collection[i][prop] === source[prop]) {
arr.push(collection[i]);
}
}
}
return arr;
}
當有在源參數的多個按鍵,
if (collection[i].hasOwnProperty(Object.keys(source)))
返回false即使當集合[I]中確實包含的按鍵按如下。
whereAreYou([{ "a": 1, "b": 2 }, { "a": 1 }, { "a": 1, "b": 2, "c": 2 }], { "a": 1, "b": 2 })
Object.keys(source)= a,b
Object.keys(collection[0]))= a,b
collection[0].hasOwnProperty(Object.keys(source))= false
Object.keys(source)= a,b
Object.keys(collection[1]))= a
collection[1].hasOwnProperty(Object.keys(source))= false
Object.keys(source)= a,b
Object.keys(collection[2]))= a,b,c
collection[2].hasOwnProperty(Object.keys(source))= false
[]
我的問題是爲什麼不是a,b和a,b相等?感謝您的時間!
非常感謝您花時間幫忙!在發佈之前,我確實想出了一個更好的方法來解決算法,我想我應該更清楚一點。我試圖理解爲什麼 集合[0] .hasOwnProperty(Object.keys(source)) 在上述集合[0]和Object.keys(源)等於a,b時等於false。 – Will
由於 'WhereAreYou([{「a」:1},{「a」:1},{「a」:1,「b」:2}],{「a」:1}) Object。 (源)= Object.keys(collection [0]))= a collection (object.keys(source))= a Object.keys(collection [2]))= a,b 集合[2] .hasOwnProperty(Object.keys(source))= true []' 爲什麼不a,b返回true? – Will