1.函数 lookUp
有两个预定义参数:firstName
值和prop
属性 。
函数将会检查通讯录是否存在一个联系人的firstName
属性等于firstName
值,还会检查对应联系人是否存在 prop
属性。
如果它们都存在,函数返回prop
属性对应的值。
如果firstName
值不存在,返回 "No such contact"
。
如果prop
属性不存在,返回 "No such property"
。
//Setup var contacts = [ { "firstName": "Akira", "lastName": "Laine", "number": "0543236543", "likes": ["Pizza", "Coding", "Brownie Points"] }, { "firstName": "Harry", "lastName": "Potter", "number": "0994372684", "likes": ["Hogwarts", "Magic", "Hagrid"] }, { "firstName": "Sherlock", "lastName": "Holmes", "number": "0487345643", "likes": ["Intriguing Cases", "Violin"] }, { "firstName": "Kristian", "lastName": "Vos", "number": "unknown", "likes": ["Javascript", "Gaming", "Foxes"] } ]; function lookUp(firstName, prop){ // Only change code below this line var _firstname = false,_prop = false; for(var i = 0; i < contacts.length; i++){ if(firstName == contacts[i].firstName && contacts[i][prop]){ return contacts[i][prop]; } if(contacts[i].firstName == firstName){ _firstname = true; if(contacts[i][prop]){ _prop = true; } } } if(!_firstname){return "No such contact";} if(!_prop){return "No such property";} // Only change code above this line } // Change these values to test your function lookUp("Kristian", "lastName");
2.将给定的数字转换成罗马数字。
function convert(num) { var romanArr = ["I","V","X","L","C","D","M"]; // 1 5 10 50 100 500 1000 var str = "",index = 0; while(num > 0){ var roman = num % 10; switch(roman){ case 3: str = romanArr[index] + str; roman --; case 2: str = romanArr[index] + str; roman --; //continue; case 1: str = romanArr[index] + str; break; case 4: str = romanArr[index] + str; str = romanArr[index + 1] + str; break; case 8: str = romanArr[index] + str; roman --; case 7: str = romanArr[index] + str; roman --; case 6: str = romanArr[index] + str; roman --; //continue; case 5: str = romanArr[index + 1] + str; break; case 9: str = romanArr[index] + str; str = romanArr[index + 2] + str; break; default: break; } index += 2; num = Math.floor(num / 10); } return str; //return num; } convert(4);
3.
写一个 function,它遍历一个对象数组(第一个参数)并返回一个包含相匹配的属性-值对(第二个参数)的所有对象的数组。如果返回的数组中包含 source 对象的属性-值对,那么此对象的每一个属性-值对都必须存在于 collection 的对象中。
例如,如果第一个参数是 [{ first: "Romeo", last: "Montague" }, { first: "Mercutio", last: null }, { first: "Tybalt", last: "Capulet" }]
,第二个参数是 { last: "Capulet" }
,那么你必须从数组(第一个参数)返回其中的第三个对象,因为它包含了作为第二个参数传递的属性-值对。
function where(collection, source) { var arr = []; // What's in a name? var pro = Object.keys(source); //遍历colletion for(var j = 0;j < collection.length; j++){ //遍历source里面的对象 var boo = true; for(var i in source){ if(source[i] != collection[j][i] || !collection[j].hasOwnProperty(i)){ boo = false; } } /*for(var i = 0;i < pro.length;i++){ if(!collection[j].hasOwnProperty(pro[i]) || collection[j][pro[i]] != source[pro[i]]){ boo = false; } }*/ if(boo){ arr.push(collection[j]); } } return arr; } where([{ "a": 1, "b": 2 }, { "a": 1 }, { "a": 1, "b": 2, "c": 2 }], { "a": 1, "b": 2 });
老版本浏览器不支持for in,所以项目中尽量不要使用