/*array 是一个「包含了『只包含了 0 9 的 array』的 array」
返回一个标记过的 array
范例如下, 这是 array
[
[0, 9, 0, 0],
[0, 0, 9, 0],
[9, 0, 9, 0],
[0, 9, 0, 0],
]
这是标记后的结果
[
[1, 9, 2, 1],
[2, 4, 9, 2],
[9, 4, 9, 2],
[2, 9, 2, 1],
]
规则是, 0 会被设置为四周 8个元素中 9 的数量
思路:
假设已经生成了 array,写一个变换函数
从头遍历到尾,对每一个元素进行判断
判断越界的函数
*/
var m = function () {
var mM = Math.random()
if (mM > 0.5) {
return 9
} else {
return 0
}
}
var arrayNs = function (n) {
var arrays = []
for (var i = 0; i < n; i++) {
arrays.push(m())
}
return arrays
}
var squre = function (n) {
let array = []
for(let i = 0; i < n; i++) {
let line = arrayNs(n)
array.push(line)
}
return array
}
var is_yuejie = function (array, x, y) {
if((x >= 0 && x < array.length) && (y >= 0 && y < array.length)) {
return false
} else {
return true
}
}
var array_squre = function (array) {
let zuobiao = {}
for (let i = 0; i < array.length; i++) {
let line = array[i]
for (let j = 0; j < line.length; j++) {
let item = line[j]
if(item === 9) {
zuobiao["top_left"] = {
x: i - 1,
y: j - 1,
}
zuobiao['tops'] = {
x: i - 1,
y: j,
}
zuobiao['top_right'] = {
x: i - 1,
y: j + 1,
}
zuobiao['left'] = {
x: i,
y: j - 1,
}
zuobiao['right'] = {
x: i,
y: j + 1,
}
zuobiao['buttom_right'] = {
x: i + 1,
y: j + 1,
}
zuobiao['buttom_left'] = {
x: i + 1,
y: j - 1,
}
zuobiao['buttom'] = {
x: i + 1,
y: j,
}
for (key in zuobiao) {
let o = zuobiao[key]
if(is_yuejie(array, o.x, o.y) || array[o.x][o.y] === 9 ) {
continue
} else {
array[o.x][o.y] += 1
}
}
}
}
}
return array
}
let arr = squre(7)
array_squre(arr)
/*结果为:
(7) [Array(7), Array(7), Array(7), Array(7), Array(7), Array(7), Array(7)]
0: (7) [2, 9, 9, 9, 9, 9, 1]
1: (7) [9, 5, 9, 7, 9, 4, 2]
2: (7) [2, 5, 9, 9, 4, 9, 2]
3: (7) [2, 9, 9, 4, 4, 9, 4]
4: (7) [9, 6, 9, 3, 3, 9, 9]
5: (7) [9, 9, 4, 9, 3, 4, 3]
6: (7) [3, 9, 3, 2, 9, 2, 9]
*/
for循环里面的of为key的值(value)
// 实现函数
/*students 是 array,里面的每个元素都是如下格式的 object
{
'name': 'gua',
'sex': '男',
'score': 127,
}
返回 score 最高的那个元素(object)
*/
var top1 = function(student_list) {
var result = student_list[0]
for (var student of student_list) {
if (student.score > result.score) {
result = student
}
}
return result
}
var student_list = [
{
'name': 'gua1',
'sex': '男',
'score': 627,
},
{
'name': 'gua2',
'sex': '男',
'score': 99,
},
{
'name': 'gua3',
'sex': '男',
'score': 199,
},
{
'name': 'gua4',
'sex': '男',
'score': 299,
},
{
'name': 'gua5',
'sex': '男',
'score': 499,
},
]
log(top1(student_list))
//结果为:
{name: "gua1", sex: "男", score: 627}
/*
day 是代表星期的数字, 从周一到周日分别是 1 2 3 4 5 6 7
返回 '星期一' '星期二' 这样的描述字符串
*/
var formated_weekday = function(day) {
var wfzi = ['','一','二','三','四','五','六','七']
return ('星期' + wfzi[day])
}
in为数组中的下标
/*
price 是一个 int
grade 合法情况下一共 6 种取值, 还可能没有给出这个参数
'小学生'
'初中生'
'高中生'
'大学生'
'研究生'
对应的折扣分别是 5 6 7 8 9
注意, 如果调用者没有给出 grade 参数, 没有折扣
返回折扣后的价格
*/
var discount = function(price, grade) {
var dis = [10,5,6,7,8,9]
var gra = [undefined,'小学生','初中生','高中生','大学生','研究生']
var result = price
for(var i in gra) {
// i = Number(i)
// log(gra[i],dis[i])
if(gra[i] == grade) {
result = price*dis[i]/10
return result
}
}
}
discount(100, '小学生')
discount(100, '初中生')
//结果为:50 60
/*
array 是 array 类型, 里面的元素都是字符串
按如下的格式返回这个 array
假设 array 是 ['python', 'js', 'objective-c']
那么返回的数据是一个数组, 多了首尾两个元素
[
'+++++++++++++++',
'+ python +',
'+ js +',
'+ objective-c +',
'+++++++++++++++',
]
返回包含了 string 的 array
*/
var longest = function (array) {
console.log('array', array)
var long = array[0].length
console.log('long', long)
for (let i = 1; i < array.length; i++) {
var n = array[i].length
if (long < n) {
long = n
}
}
return long
}
var starEnd = function (array) {
var lengths = longest(array)
var star = ''
for (var i = 0; i < lengths + 4; i++) {
star += '+'
}
return star
}
var first = function (array) {
for (var i = 0; i < array.length; i++) {
array[i] = '+ ' + array[i]
}
return array
}
var end = function (array) {
var len = longest(array) + 1 //len = 10
for (var i = 0; i < array.length; i++) {
var len1 = len - array[i].length
for (var j = 0; j < len1; j++) {
array[i] = array[i] + ' '
}
array[i] = array[i] + '+'
}
return array
}
var firstEnd = function (array) {
return end(first(array))
}
var arrayReturn = function (array) {
var n = []
var border_arr = array.slice(0)
n.push(starEnd(border_arr))
let inners = firstEnd(array)
for(value of inners) {
n.push(value)
}
n.push(starEnd(border_arr))
return n
}
var arrr = arrayReturn(['123','12345','12'])
console.log(arrr)
//结果为:
'+++++++++'
'+ 123 +'
'+ 12345 +'
'+ 12 +'
'+++++++++'