【发布时间】:2020-10-13 11:22:23
【问题描述】:
我在 Javascript 中有一个对象数组,例如:
var arrobj = [
{'id': 1, 'editors': 'Andrew||Maria', 'authors': 'Dorian||Gabi', 'agents': 'Bob||Peter'},
{'id': 2, 'editors': 'Dorian||Guybrush', 'author': 'Peter||Frodo', 'agents': 'Dorian||Otto'},
{'id': 3, 'editors': 'Klaus||Otmar', 'authors': 'Jordan||Morgan', 'agents': 'Jordan||Peter'},
];
我需要列出每个对象中出现的所有人(编辑、作者和代理)及其角色。输出应该包含一个新的键/值对('involved'),如下所示:
'involved': 'Andrew (editor)|| Maria (editor)|| Dorian (author) || Gabi (author) || Bob (agent) || Peter (agent)'
对象数组应该是这样的:
var arrobj = [
{'id': 1, 'editors': 'Andrew||Maria', 'authors': 'Dorian||Gabi', 'agents': 'Bob||Peter', 'involved': 'Andrew (editor)|| Maria (editor)|| Dorian (author) || Gabi (author) || Bob (agent) || Peter (agent)'},
{'id': 2, 'editors': 'Dorian||Guybrush', 'authors': 'Peter||Frodo', 'agents': 'Dorian||Otto','involved': 'Dorian (editor, agent) || Gybrush (editor) || Peter (author) || Frodo (author) || Otto (author)'},
{'id': 3, 'editors': 'Klaus||Otmar', 'authors': 'Jordan||Morgan', 'agents': 'Jordan||Peter','involved': 'Klaus (editor) || Otmar (editor) || Jordan (author, agent) || Morgan (author) || Peter (agent)'},
];
如果一个人与多个角色相关联(例如,id 2 --> Dorian 出现在 editors 和 agent 中),他们在“involved”中的出现应该只有一次,但两个角色都在括号中(例如 Dorian (editor , 代理) )
我对编程很陌生,想不出正确的方法。 第一步,我想我必须用“||”分割所有值放入数组中,然后将每个名称与数组中的每个其他名称进行比较。
非常感谢您对我的问题的帮助。
【问题讨论】:
-
“第一步,我想我必须将所有值按“||”拆分为数组,然后将每个名称与数组中的每个其他名称进行比较。” 请将您尝试过的代码添加到问题中。
-
所以你想在当前对象中包含一个键/值对,它具有几乎相同的信息,但在一个键/值对条目中?当可以通过遍历对象轻松访问数据时,我看不到复制数据的意义
标签: javascript arrays object string-comparison