在博客上看到一個人對 FCC 一道JS算法題的答案,有一個變量聲明沒有看懂,特來請教:題干:寫一個 function,它遍歷一個對象數組(第一個參數)并返回一個包含相匹配的屬性-值對(第二個參數)的所有對象的數組。如果返回的數組中包含 source 對象的屬性-值對,那么此對象的每一個屬性-值對都必須存在于 collection 的對象中。例如,如果第一個參數是[{ first: "Romeo", last: "Montague" }, { first: "Mercutio", last: null }, { first: "Tybalt", last:"Capulet" }]第二個參數是:{ last: "Capulet" }那么你必須從數組(第一個參數)返回其中的第三個對象,因為它包含了作為第二個參數傳遞的屬性-值對。用到的是Object.key方法。接下來就只是遍歷。解決方案:function where(collection, source) { var arr = []; var arrSource=Object.keys(source);//把source的屬性轉化為數組 // What's in a name? var i='',j=0; for(i in collection){//循環collection的元素 var count=0; for(j=0;j<arrSource.length;j++){//針對source的屬性進行循環,查找這個collection元素中是否有指定的source的屬性 if(collection[i][arrSource[j]]&&source[arrSource[j]]==collection[i][arrSource[j]]){ count++; } } //判斷:如果完全包含,這個collection的元素就被允許添加到里邊。 if(count==arrSource.length){ arr.push(collection[i]); } } return arr;}我的問題在于 上面 var i ='' ,為什么聲明為空字符串,還可以使用i作為下面數組的下標呢?
JS 中 變量聲明為 字符串的問題
狐的傳說
2018-10-17 10:14:38