js练习表回顾

JavaScript 使用循环语句查找通讯录

我们有一个对象数组,里面存储着通讯录。

函数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 hasName = false;//用来记录first是否存在
for(var i=0;iif(contacts[i].firstName == firstName){
    hasName=true;//存在该firstname
    //查找是否存在属性prop
    if(contacts[i].hasOwnProperty(prop)){
        return contacts[i][prop];
     }else{
        return "No such property";
     }

  }
}
if(!hasName){
 return  "No such contact";
}
// Only change code above this line
}

// Change these values to test your function
lookUp("Akira", "likes");

JavaScript push()函数追加数组数据

// 举例
var ourArray = ["Stimpson", "J", "cat"];
ourArray.push(["happy", "joy"]); 
// ourArray now equals ["Stimpson", "J", "cat", ["happy", "joy"]]

// Setup
var myArray = [["John", 23], ["cat", 2]];
myArray.push(["dog",3]);
// Only change code below this line.

JavaScript pop()函数弹出数组最后数据

// 举例
var ourArray = [1,2,3];
var removedFromOurArray = ourArray.pop(); 
// removedFromOurArray now equals 3, and ourArray now equals [1,2]

// Setup
var myArray = [["John", 23], ["cat", 2]];

// Only change code below this line.
var removedFromMyArray=myArray.pop();

JavaScript shift()函数移出数组第一个数据

// 举例
var ourArray = ["Stimpson", "J", ["cat"]];
removedFromOurArray = ourArray.shift();
// removedFromOurArray now equals "Stimpson" and ourArray now equals ["J", ["cat"]].

// Setup
var myArray = [["John", 23], ["dog", 3]];

// Only change code below this line.
var removedFromMyArray = myArray.shift();

JavaScript unshift()函数移入数据到数组第一位

// 举例
var ourArray = ["Stimpson", "J", "cat"];
ourArray.shift(); // ourArray now equals ["J", "cat"]
ourArray.unshift("Happy"); 
// ourArray now equals ["Happy", "J", "cat"]

// Setup
var myArray = [["John", 23], ["dog", 3]];
myArray.shift();
myArray.unshift(["Paul",35]);
// Only change code below this line.

JavaScript 对象操作

你之前可能听说过对象 object 。

对象和数组很相似,数组是通过索引来访问和修改数据,对象是通过属性来访问和修改数据的。
这是一个示例对象:

var cat = {
"name": "Whiskers",
"legs": 4,
"tails": 1,
"enemies": ["Water", "Dogs"],
"the drink": "water"
};
  • JavaScript 使用点操作符.读取对象属性 var Name=cat.name;
  • JavaScript 使用[]读取对象属性 ,属性名称中如果有空格,必须把属性名称用单引号或双引号包裹起来var drink=cat["the drink"]
  • JavaScript 使用变量访问对象属性
    中括号操作符的另一个使用方式是用变量来访问一个属性。当你需要遍历对象的属性列表或查表时,这种方式极为有用。
var someProp = "propName";
var myObj = {
propName: "Some Value"
}
myObj[someProp]; // "Some Value"
  • JavaScript 更新对象属性
// 举例
var ourDog = {
"name": "Camper",
"legs": 4,
"tails": 1,
"friends": ["everything!"]
};
ourDog.name = "Happy Camper";
  • JavaScript 给对象添加属性
// 举例
var ourDog = {
"name": "Camper",
"legs": 4,
"tails": 1,
"friends": ["everything!"]
};
ourDog.bark = "bow-wow";
  • JavaScript 删除对象属性
// 举例
var ourDog = {
"name": "Camper",
"legs": 4,
"tails": 1,
"friends": ["everything!"],
"bark": "bow-wow"
};
delete ourDog.bark;

JavaScript 检查对象属性

有时检查一个对象属性是否存在是非常有用的,我们可以用.hasOwnProperty(propname)方法来检查对象是否有该属性。如果有返回true,反之返回 false。

// Setup
var myObj = {
gift: "pony",
pet: "kitten",
bed: "sleigh"
};

function checkObj(checkProp) {
// Your Code Here
if (myObj.hasOwnProperty(checkProp))
  return myObj[checkProp];
else return "Not Found";
}

// Test your code by modifying these values
checkObj("gift");

JavaScript JSON操作

JavaScript Object Notation 简称 JSON,它使用JavaScript对象的格式来存储数据。JSON是灵活的,因为它允许 数据结构 是 字符串,数字,布尔值,字符串,和 对象 的任意组合。
右边有一个JSON对象,代表着你的专辑集。每一张专辑由一个唯一的id标识,并具有多种属性。但并非所有的专辑都有完整的信息。

写一个函数,它有个三个参数,idpropvalue

如果 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;
}
else if(value !==''&&prop =='tracks'){
  collectionCopy[id][prop].push(value);
}
else if(value ===''){
  delete collectionCopy[id][prop];
}

return collection;
}

// Alter values below to test your code
update(5439, "artist", "ABBA");

JavaScript 使用正则表达式操作字符串

Regular expressions 正则表达式被用来根据某种匹配模式来寻找strings中的某些单词。

举例:如果我们想要找到字符串The dog chased the cat中单词 the,我们可以使用下面的正则表达式: /the/gi

我们可以把这个正则表达式分成几段:

/是这个正则表达式的头部

the 是我们想要匹配的模式

/是这个正则表达式的尾部

g代表着global(全局),意味着返回所有的匹配而不仅仅是第一个。

i代表着忽略大小写,意思是当我们寻找匹配的字符串的时候忽略掉字母的大小写。

// Setup
var testString = "Ada Lovelace and Charles Babbage designed the first computer and the software that would have run on it.";

// 举例
var expressionToGetSoftware = /software/gi;
var softwareCount = testString.match(expressionToGetSoftware).length;


// Only change code below this line.

var expression = /and/gi;// Change this Line

// Only change code above this line

// This code counts the matches of expression in testString
var andCount = testString.match(expression).length;

JavaScript 使用正则表达式选取数值

我们可以在正则表达式中使用特殊选择器来选取特殊类型的值。

特殊选择器中的一种就是数字选择器\d,意思是被用来获取一个字符串的数字。

在JavaScript中, 数字选择器类似于:/\d/g

在选择器后面添加一个加号标记(+),例如:/\d+/g,它允许这个正则表达式匹配一个或更多数字。

尾部的g'global'的简写,意思是允许这个正则表达式 找到所有的匹配而不是仅仅找到第一个匹配。

// Setup
var testString = "There are 3 cats but 4 dogs.";

// Only change code below this line.

var expression = /\d+/g;// Change this line

// Only change code above this line

// This code counts the matches of expression in testString
var digitCount = testString.match(expression).length;

JavaScript 使用正则表达式选取空白字符

我们也可以使用正则表达式选择器 \s来选择一个字符串中的空白。

空白字符有 " "(空格符)、\r(回车符)、\n (换行符)、\t(制表符) 和\f(换页符)。

空白正则表达式类似于:

/\s+/g

// Setup
var testString = "How many spaces are there in this sentence?";

// Only change code below this line.

var expression = /\s+/g;// Change this line

// Only change code above this line

// This code counts the matches of expression in testString
var spaceCount = testString.match(expression).length;

JavaScript 使用正则表达式转化匹配

你可以用正则表达式选择器的大写版本 来转化任何匹配。

举个例子:\s匹配任何空白字符,\S匹配任何非空白字符。
/\S/g 来匹配字符串testString中的所有非空白字符。

// Setup
var testString = "How many non-space characters are there in this sentence?";

// Only change code below this line.

var expression = /\S/g;// Change this line

// Only change code above this line

// This code counts the matches of expression in testString
var nonSpaceCount = testString.match(expression).length;

你可能感兴趣的:(Javascript)