用户:
PXstate查看:17 回复:7 评论:17 创建时间:2023-07-02T20:50:22
在各大语言中都是支持多层储存的,但是kitten无法多层存储。
var x = [value1,value2,[value3,value4,[value5,[value6]]]]
像这种kitten本身的列表都是无法实现的
那如何解决多层储存呢?(kobj已经实现了,具体解决方案我不知道(因为我看不懂
))
虽然kitten无法多层存储,但是单层存储是可以的
var x = [[value1],[value2],[value3],value4]
这样其实挺好,就不用单独去做一个系统为了把一个无深层列表储存进列表的一项了
看一下基础的无深层列表存储的办法
var x_name = [name1,name2]
var x_value = [value1,[value2,value3]]
实例
// 这是列表内的
name = [value1,[value2,value3]]
直接在x_name内搜索名称找到项,然后找到对应值输出
多层列表里面包含着很多列表,从最深的层开始,最深一层肯定是一个无深度的列表,如果把这个列表用一个指定的东西来代替,那他的上一级也变成了一个无深度的列表。
看这个示例,[value1,[value2,value3]]是一个多层列表,最深的一层是[value2,value3],把这个列表取名为*array,为什么要在前面加个*号了,为了让识别的代码知道,这是一个代替列表的值,并不是这一项是一个字符串,也可以换成别的识别符。然后[value1,*array]这个列表,这就变成了一个无深度的列表。那怎么让代码知道这个array表示的值呢?我们可以直接添加一个新的列表在x_name和x_value中,名称就是array,值就是[value2,value3]。等到机器识别到*array,识别到*,知道这是一个列表的名称,然后在x_name找,找到x_value,原本的列表。按照这样的方法,任何的多层列表都可以这样进行存储。
接下来我们练习一下
如果我们要存储
[v1,[[v2,v3],[v4,v5],v6]]
var x_name = []
var x_value = []
从最深的列表开始,注意,这里有两个最深的列表,[v2,v3],[v4,v5],我们取名v23和v45
[v1,[*v23,*v45,v6]]
var x_name = [v23,v45]
var x_value = [[v2,v3],[v4,v5]]
接下来继续,最深是[*v23,*45,v6],取名为v23456
[v1,*v23456]
var x_name = [v23,v45,v23456]
var x_value = [[v2,v3],[v4,v5],[*v23,*v45,v6]]
然后会发现已经成为了一个没有深度的列表,可以直接存进去了
总列表叫array
var x_name = [v23,v45,v23456,array]
var x_value = [[v2,v3],[v4,v5],[*v23,*v45,v6],[v1,*v23456]]
v23/v45/v2345其实可以存到别的列表,以免和用户储存的列表冲突
这样非常好解析,也好写入
作业(我觉得没人会去做
)
var x_name = [pxstate,作品,荣誉墙,其他]
var x_value = [[年龄,*作品,*荣誉墙],[winPX,24点解题器],[浏览量,*其他],[114514,225625,336736]]
请问(注意:代码项数性质,0为第一项)
1、console.log(pxstate[2][1][0])输出多少?
2、把pxstate列表写成原本形式
PXstate目录树结构
# 每项列表0项为所在目录标志数字,1项为类型(1文件还是2文件夹),2项为名称,3项如果是文件为value,如果是文件夹就是当前文件夹内的标志数字 顶层为1
[[1,1,file1,text1],
[1,2,文件夹1,2],
[2,1,file2,text2]]
点赞0
评论