function iterate(obj) {
const result = [];
for(let key in obj) {
if(obj.hasOwnProperty(key)) {
result.push(`${key}: ${obj[key]}`)
}
}
return result;
}
obj.hasOwnProperty(key)
判断键值key
对应的属性是否在对象obj
自身。
输入:_comma(12300)
输出:‘12,300’
function _comma(number) {
if (number < 1000) {
return number.toString()
} else {
return _comma(Math.floor(number/1000)) + ',' + _comma(number%1000)
}
}
解题思路:在字符串长度不确定的情况下,可以使用递归。 _comma(number % 1000) 是获取数字最后三位,将其放在返回值的最后面,并且在前面加一个逗号,_comma(Math.floor(number / 1000)) 是将剩下的部分传入函数本身,不断重复,直到入参的number小于1000,返回 number.toString(),函数最后返回一个完整的千位分隔符的字符串。
注意: 请勿直接使用for/while
const _createArray = (number) => {
// 补全代码
let arr = new Array(number)
let newArr = arr.fill(number)
return newArr
}
使用了数组的Array.fill()
方法.
// fill()方法用一个固定值填充一个数组中从其实索引到中终止索引内的全部元素,不包括终止索引。
// 语法:arr.fill(value,start,end)
// value: 用来填充数组元素的值
// start: 起始索引,默认值为0
// end: 终止索引,默认值为this.length,如果不填的话,就包括终止索引
// 注: 1.返回修改后的数组
// 2.如果start为负数,则开始索引被计算为length+start
// 3.如果end为负数,则结束索引被计算为length+end
// 4.start和end参数是可选的,默认值分别为0和arr.length
// 5.当一个对象被传递给fill方法时,填充数组的是这个对象的引用
const arr = [1, 2, 3, 4]
console.log(arr.fill(0, 2, 4)); //[1,2,0,0] 从索引0开始,到索引2结束,不包括终止索引,将值替换为4
console.log(arr.fill(5, 1)); // [1,5,5,5]
console.log(arr.fill(6)); // [6,6,6,6]
// 示例
[1, 2, 3].fill(4); // [4, 4, 4]
[1, 2, 3].fill(4, 1); // [1, 4, 4]
[1, 2, 3].fill(4, 1, 2); // [1, 4, 3]
[1, 2, 3].fill(4, 1, 1); // [1, 2, 3]
[1, 2, 3].fill(4, 3, 3); // [1, 2, 3]
[1, 2, 3].fill(4, -3, -2); // [4, 2, 3]
[1, 2, 3].fill(4, NaN, NaN); // [1, 2, 3]
[1, 2, 3].fill(4, 3, 5); // [1, 2, 3]
console.log(Array(3).fill(4)); // [4,4,4]