Javascript 将数据分组到单独的列表中
所以我现在遇到了一个逻辑上的难题。这就是我试图解决的问题 问题 我正在读取一个PDB文件,当它通过该文件时,它会创建一个文件中所有链的列表。这个列表看起来像这样Javascript 将数据分组到单独的列表中,javascript,jquery,arrays,Javascript,Jquery,Arrays,所以我现在遇到了一个逻辑上的难题。这就是我试图解决的问题 问题 我正在读取一个PDB文件,当它通过该文件时,它会创建一个文件中所有链的列表。这个列表看起来像这样 chainIdList = [A, E, D, F, G, H]; 长度可以变化 我还有一个列表,列出了序列中每个剩余部分的所有chainID。数据是我制作的一个字典,看起来像这样 chainResidue = {"chainId" : chainId, "residueNumber" : residueNumber} chainR
chainIdList = [A, E, D, F, G, H];
长度可以变化
我还有一个列表,列出了序列中每个剩余部分的所有chainID。数据是我制作的一个字典,看起来像这样
chainResidue = {"chainId" : chainId, "residueNumber" : residueNumber}
chainResidue = { "A", "4"}
所以我想做的是遍历chainresidence列表并检查chainresidence.chainId是否在chainList中。如果是,则创建一个匹配的chainId的新列表,然后将所有剩余编号附加到该列表中
这有意义吗
所以最后看起来
A = [ 4, 6, 7, 8, ... and so on];
E = [ 9, 10];
到目前为止的代码
for (var i = 0; i < chainResidue.length; ++i) {
for (var j = 0; j < chainList.length; ++j) {
if (chainResidue[i].chainId === chainList[j]) {
//Append value of the chainResidue[i].residueName into chainList[j] make a list of lists?
}
}
}
我只是把“Y”和数字拉进去,它是对应于它的数字,比如17和18 您可以使用以下ES6脚本:
//示例数据
var chaineidlist=['A','E','D','F','G','H'];
var链剩余=[
{“chainId”:“A”,“resideNumber”:24},
{“chainId”:“E”,“resideNumber”:18},
{“chainId”:“A”,“resideNumber”:9},
{“chainId”:“A”,“resideNumber”:15}
];
//创建以每个字母开头的空列表
var chaineidobj=chaineidlist.reduce((obj,id)=>(obj[id]=[],obj),{});
//用剩余数填充这些列表
var result=chainresidence.reduce((res,obj)=>(res[obj.chainId]?res[obj.chainId]。push(obj.residenceNumber):0,res),chainIdObj);
控制台日志(结果)代码>您可以使用以下ES6脚本:
//示例数据
var chaineidlist=['A','E','D','F','G','H'];
var链剩余=[
{“chainId”:“A”,“resideNumber”:24},
{“chainId”:“E”,“resideNumber”:18},
{“chainId”:“A”,“resideNumber”:9},
{“chainId”:“A”,“resideNumber”:15}
];
//创建以每个字母开头的空列表
var chaineidobj=chaineidlist.reduce((obj,id)=>(obj[id]=[],obj),{});
//用剩余数填充这些列表
var result=chainresidence.reduce((res,obj)=>(res[obj.chainId]?res[obj.chainId]。push(obj.residenceNumber):0,res),chainIdObj);
控制台日志(结果)代码>虽然您已经有了答案,但我建议不要使用,因为它总是返回相同的对象,而不是必需的
//示例数据
var chaineidlist=['A','E','D','F','G','H'],
chainResidence=[{chainId:“A”,resideNumber:24},{chainId:“E”,resideNumber:18},{chainId:“A”,resideNumber:9},{chainId:“A”,resideNumber:15}],
结果=Object.create(空);
forEach(a=>result[a]=[]);
forEach(a=>result[a.chainId]&&result[a.chainId].push(a.residenumber));
控制台日志(结果)代码>虽然您已经有了答案,但我建议不要使用,因为它总是返回相同的对象,而不是必需的
//示例数据
var chaineidlist=['A','E','D','F','G','H'],
chainResidence=[{chainId:“A”,resideNumber:24},{chainId:“E”,resideNumber:18},{chainId:“A”,resideNumber:9},{chainId:“A”,resideNumber:15}],
结果=Object.create(空);
forEach(a=>result[a]=[]);
forEach(a=>result[a.chainId]&&result[a.chainId].push(a.residenumber));
控制台日志(结果)代码>请添加一些示例数据。@NinaScholz有帮助吗?没有,没有。我对chainIdleist和chainResumination与有效数据感兴趣。A
和E
的结果集是什么?请添加一些示例数据。@NinaScholz有帮助吗?不,没有。我对chainIdleist和chainResumination与有效数据感兴趣。A
和E
的结果集是什么?天哪,真管用!!!你能再给我解释一下代码吗?我真的很想知道这是怎么在我刚才的回答中添加了一个解释的。天哪,这是有效的!!!你能再给我解释一下代码吗?我真的很想知道这是如何在我刚才的回答中添加解释的。
ATOM 3434 CA LEU Y 17 -3.567 5.653 33.836 1.00 28.21 C
ATOM 3435 C LEU Y 17 -3.114 6.290 32.530 1.00 31.33 C
ATOM 3436 O LEU Y 17 -2.020 6.873 32.474 1.00 26.01 O
ATOM 3437 CB LEU Y 17 -2.620 4.575 34.233 1.00 29.46 C
ATOM 3438 CG LEU Y 17 -2.610 4.263 35.705 1.00 33.42 C
ATOM 3439 CD1 LEU Y 17 -1.430 3.363 35.960 1.00 40.68 C
ATOM 3440 CD2 LEU Y 17 -2.351 5.483 36.559 1.00 40.12 C
ATOM 3441 N ASP Y 18 -3.926 6.263 31.454 1.00 30.62 N
ATOM 3442 CA ASP Y 18 -3.487 6.866 30.205 1.00 31.46 C