字符转换的三种方法:https://blog.csdn.net/bellediao/article/details/107189385
全局变量题表述
给定的 js 代码中存在全局变量,请修复。
function globals() {
myObject = {
name : 'Jory'
};
return myObject;
}
在Javascript语言中,声明变量使用的都是关键字var,如果不使用var而直接声明变量,则该变量为全局变量。
function globals() {
// 在函数里面 必须加var 要不你就在全局定义
//myObject = {
var myObject = {
name : 'Jory'
};
return myObject;
}
属性遍历题目描述
找出对象 obj 不在原型链上的属性(注意这题测试例子的冒号后面也有一个空格~)
1、返回数组,格式为 key: value
2、结果数组不要求顺序
示例1
输入
var C = function() {this.foo = 'bar'; this.baz = 'bim';};
C.prototype.bop = 'bip';
iterate(new C());
输出
["foo: bar", "baz: bim"]
可以使用for-in来遍历对象中的属性,hasOwnproperty方法能返回一个布尔值,指出一个对象是否具有指定名称的属性。此方法无法检查该对象的原型链中是否具有该属性,该属性必须为对象本身的属性。hasOwnproperty方法是检测属性是存在实列中,还是存在原型中。存在对象实列中返回true ,for-in循环时,返回的是所有能够通过对象访问的属性(可枚举的属性)
function iterate(obj) {
var arr = [];
//使用for-in遍历对象属性
for(var key in obj){
//判断key是否为对象本身的属性
if(obj.hasOwnProperty(key)){
//将属性和值按格式存入数组
arr.push(key+": "+obj[key]);
}
}
return arr;
}
模块题目描述
完成函数 createModule,调用之后满足如下要求:
1、返回一个对象
2、对象的 greeting 属性值等于 str1, name 属性值等于 str2
3、对象存在一个 sayIt 方法,该方法返回的字符串为 greeting属性值 + ', ' + name属性值。
//原型模式:
function createModule(str1, str2) {
function Obj()
{
this.greeting = str1;
this.name = str2;
}
Obj.prototype.sayIt = function(){return this.greeting + ", " + this.name;}
return new Obj();
}
//构造函数模式:
function createModule(str1, str2) {
function Obj()
{
this.greeting = str1;
this.name = str2;
this.sayIt = function(){return this.greeting + ", " + this.name;}
}
return new Obj();
}
//创建对象模式:
function createModule(str1, str2) {
function CreateObj()
{
obj = new Object;
obj.greeting = str1;
obj.name = str2;
obj.sayIt = function(){return this.greeting + ", " + this.name;}
return obj;
}
return CreateObj();
}
//字面量模式:
function createModule(str1, str2) {
var obj =
{
greeting : str1,
name : str2,
sayIt : function(){return this.greeting + ", " + this.name;}
};
return obj;
}
判断是否含数组·题目描述
给定字符串 str,检查其是否包含数字,包含返回 true,否则返回 false
示例1
输入:'abc123'
输出:true
判断字符串中是否含有数字,可以用正则表达式。/\d/可以匹配字符串中的数字字符,用test方法可以检测。
function containsNumber(str) {
var b = /\d/;
return b.test(str);
}
题目描述
统计数组 arr 中值等于 item 的元素出现的次数
示例1
输入:[1, 2, 4, 4, 3, 4, 3], 4
输出 : 3
function count(arr, item) {
var count = 0;
arr.forEach(element => {
element == item ? count++ : 0
});
return count;
}
题目描述
求 a 和 b 相乘的值,a 和 b 可能是小数,需要注意结果的精度问题
示例
输入:3, 0.0001
输出:0.0003
计算两小数的小数点位数,然后相加得到保留的小数点位数,用tofixed函数即可.
function multiply(a, b) {
var re = /\./;
var aDec = a.toString().split('.')[1] || '';
var bDec = b.toString().split('.')[1] || '';
var fix = aDec.length + bDec.length;
return (a * b).toFixed(fix);
}
a.toString().split('.')[1] || ''的解释:
参数a先转为字符串在以‘.’切割成数组可以得到两项,取小数点后面那项,如果是整数的话就给空,因为他的作用只是用来算小数点的位数
知识链接:
JavaScript toFixed() 方法:把 Number 四舍五入为指定小数位数的数字。
语法:NumberObject.toFixed(num)
实例:
var num = new Number(12.33);
console.log(num.toFixed(1))//=>12.3
题目描述
给定一个构造函数 constructor,请完成 alterObjects 方法,将 constructor 的所有实例的 greeting 属性指向给定的 greeting 变量。
示例1
输入
var C = function(name) {this.name = name; return this;};
var obj1 = new C('Rebecca');
alterObjects(C, 'What\'s up'); obj1.greeting;
输出
What's up
这是原型链问题。访问一个对象的方法或者是属性,首先会在该对象中寻找,如果找到则返回,如果没找到,则在其原型链上面向上寻找,直至基原型,如还未找到,则返回undefined。将 constructor 的所有实例的 greeting 属性指向给定的 greeting 变量,只需要在constructor的原型上面添加greeting属性,并指定值。
function alterObjects(constructor, greeting) {
constructor.prototype.greeting = greeting;
}
题目描述
给定字符串 str,检查其是否以元音字母结尾
1、元音字母包括 a,e,i,o,u,以及对应的大写
2、包含返回 true,否则返回 false
首先确定元音集合[a,e,i,o,u],然后是以元音结尾,加上$,最后通配大小写,加上i。因此正则表达式为:/[a,e,i,o,u]$/i,最后用test方法去检测字符串str.
function endsWithVowel(str) {
return /[a,e,i,o,u]$/i.test(str);
}
题目描述
给定字符串 str,检查其是否符合如下格式
1、XXX-XXX-XXXX
2、其中 X 为 Number 类型
本题需要注意格式,开头^和结尾$必须加上来限定字符串,3个数可表示为\d{3},4个数则为\d{4},{n}表示前面内容出现的次数。正则表达式可写作/^\d{3}-\d{3}-\d{4}$/,有相同部分\d{3}-,因此也可写作/^(\d{3}-){2}\d{4}$/
function matchesPattern(str) {
return/^(\d{3}-){2}\d{4}$/.test(str);
}
正则: