记录一下在W3Cschool编程实战:JavaScript中遇到的难题。
1、JavaScript 使用对象进行查找值
对象和字典一样,可以用来存储键/值对。如果你的数据跟对象一样,你可以用对象来查找你想要的值,而不是使用switch或if/else语句。
当你知道你的输入数据在某个范围时,这种查找方式极为有效。
// Setup
function phoneticLookup(val) {
var result = "";
// Only change code below this line
var lookup ={
"alpha": "Adams",
"bravo": "Boston",
"charlie": "Chicago",
"delta": "Denver",
"echo": "Easy",
"foxtrot": "Frank"};
result = lookup[val];//关键点
// Only change code above this line
return result;
}
// Change this value to test
phoneticLookup("charlie");
2、JavaScript JSON集合操作
有一个JSON对象,代表着你的专辑集。每一张专辑由一个唯一的id标识,并具有多种属性。但并非所有的专辑都有完整的信息。
写一个函数,它有个三个参数,id、prop、value。
如果 value !='' 而且prop != 'tracks',collectionCopy[id][prop]=value;。
如果 value !='' 而且prop == 'tracks',collectionCopy[id][prop].push(value);。
如果 value == '' ,delete collectionCopy[id][prop];。
谨记:函数返回的永远是整个对象。
提示
使用中括号操作符来 访问对象的变量属性。
// Setup
var collection = {
2548: {
album: "Slippery When Wet",
artist: "Bon Jovi",
tracks: [
"Let It Rock",
"You Give Love a Bad Name"
]
},
2468: {
album: "1999",
artist: "Prince",
tracks: [
"1999",
"Little Red Corvette"
]
},
1245: {
artist: "Robert Palmer",
tracks: [ ]
},
5439: {
album: "ABBA Gold"
}
};
// Keep a copy of the collection for tests
var collectionCopy = JSON.parse(JSON.stringify(collection));
// Only change code below this line
function update(id, prop, value) {
if( value !='' && prop != 'tracks'){
collectionCopy[id][prop]=value;
}
if( value !='' && prop == 'tracks'){
collectionCopy[id][prop].push(value);
}
if(value == ''){
delete collectionCopy[id][prop];
}
return collection;
}
// Alter values below to test your code
update(5439, "artist", "ABBA");
3、JavaScript 使用循环语句查找通讯录
我们有一个联系人列表,里面存储着不同联系人的数组对象。
函数 lookUpProfile
有两个预定义参数: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 lookUpProfile(firstName, prop){
// Only change code below this line
for(var i =0;i<contacts.length;i++){
if(contacts[i].firstName ==firstName){
if(contacts[i].hasOwnProperty(prop)){
return contacts[i][prop];
}
else{
return "No such property";
}
}
} return "No such contact";
// Only change code above this line
}
// Change these values to test your function
lookUpProfile("Akira", "likes");