【问题标题】:Incorporating array into forloop // same pattern将数组合并到 forloop // 相同的模式
【发布时间】:2018-08-10 19:10:32
【问题描述】:

我需要一些关于如何将我的数组合并到 forloop 中的快速帮助。

我目前有一个将其作为节点的图表:

var classes = [
    {"name":"test.cluster1.item1"},
    {"name":"test.cluster1.item2"},
    {"name":"test.cluster1.item3"}
];

我有一个名为 fileArray 的单独工作数组,我想将几​​个节点合并到我的图表中

var fileArray = ["a", "b", "c", "etc..."];

我正在尝试用 fileArray 的每个元素替换数据中的所有“测试集群项”,我该怎么做?

目前我有这个,它没有任何意义,我知道,但不知道如何处理这个。

for(i = 0; i < fileArray.length; i++) {
    var classes = [
        {"name": fileArray(i)}
    ];
}

想要的结果:

var classes = [
    {"name":"fileArray[0]"},
    {"name":"fileArray[1]"},
    {"name":"fileArray[2]"},
    {"name":"fileArray[3]"},
    {"name":"fileArray[4]"}
];

谢谢。

【问题讨论】:

  • 您可以为您的示例添加所需的结果吗?你想要[{ name: "a" }, { name: "b" }, /*...*/]吗? classes 数组中的对象是否具有除“名称”之外的属性? classes 数组中是否存在不是“测试集群项”的元素,也应该保留在结果数组中?
  • 添加了想要的结果,不,name是唯一的属性。 @ASDFGerte
  • "fileArray(0)"还是fileArray[0]]的内容?
  • @ArupRakshit fileArray[0],抱歉打错了。
  • classes = classes.map((_, i) =&gt; ({ name: fileArray[i] }));

标签: javascript arrays variables arraylist


【解决方案1】:

这是使用forEach 的版本。如果您想要一个新数组,请使用 reduce 并对每个对象的属性进行深层复制,否则在当前的 classes 数组上执行此操作是有意义的,该数组维护对象可能具有的任何其他键:

var classes = [
    {"name":"test.cluster1.item1"},
    {"name":"test.cluster1.item2"},
    {"name":"test.cluster1.item3"}
];

var fileArray = ["a", "b", "c", "etc..."];

classes.forEach((e, i) => e.name = fileArray[i]);

console.log(classes);

【讨论】:

  • 这两个都只在 classes 数组中创建 3 个名称节点。我的 fileArray 数组更长而且是动态的,所以这行不通。
  • 他们“替换”——类数组只有三个元素,所以它也只输出三个。至少我是这么理解的,也可能是为什么这个答案中的代码是这样的。
  • @Akshay 你能澄清你想要什么吗?在我看来,classesfileArray 的长度相同,您希望它们并行合并,对吗?否则,为什么还要打扰classes?只是fileArray.map((e) =&gt; {return {name: e};});
  • 我希望我的类数组与我的 fileArray 中的元素数相匹配。但是,我不知道 fileArray 中有多少个元素,因为它是动态的,我只在我的问题中的类数组中添加了 3 个名称作为示例。
  • 是的,我得到了编辑谢谢。我不知道为什么我没有想到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-17
  • 2021-12-31
  • 2018-11-25
相关资源
最近更新 更多