处理字符串javascript数组中的多个字符串

处理字符串javascript数组中的多个字符串,javascript,jquery,arrays,string,Javascript,Jquery,Arrays,String,我像这样在数组中获取数据,左边是帐户名,右边是订阅 7ef:" 3sdc 12exf" 12ef:" 8ecg" 10ef:" 3ecf 3egf 3elm 3ecf 3egf 3elm " 平均7ef指数有2个数据字符串,两者之间有空格。10ef有6个数据字符串。我需要类似的形式的数据 7ef:" 3sdc" 7ef:" 12exf" 12ef:" 8ecg" 10ef:" 3ecf " 10ef:"3egf" 10ef:"3elm" 10ef:"3ecf" 10ef:"3egf" 10

我像这样在数组中获取数据,左边是帐户名,右边是订阅

7ef:" 3sdc 12exf"
12ef:" 8ecg"
10ef:" 3ecf 3egf 3elm 3ecf 3egf 3elm "
平均7ef指数有2个数据字符串,两者之间有空格。10ef有6个数据字符串。我需要类似的形式的数据

7ef:" 3sdc"
7ef:" 12exf"
12ef:" 8ecg"
10ef:" 3ecf "
10ef:"3egf" 
10ef:"3elm"
10ef:"3ecf" 
10ef:"3egf"
10ef:"3elm "
因为我必须发送它来制作它的csv文件。我如何在javascript中做到这一点? 创建这个的代码如下

   foreach ($subscriptions as $subscription) {
    $str=$str.' '.$subscription->uuid;
    }$anew[account[$i]]=$str;
编辑: 现在,在阅读了评论之后,有人能告诉我怎样才能做到这一点吗

0:" 3sdc"
1:" 12exf"
2:" 8ecg"

就像我以后会保存帐户一样,现在我想把它们全部排列起来。

这是不可能的,因为同一级别的Javascript对象只能有唯一的键,所以它只会覆盖该值

建议: 使用这样的结构

{
  7ef:["3sdc", "12exf"],
  12ef:["8ecg"],
  10ef:["3ecf","3egf", "3elm", "3ecf", "3egf", "3elm"]
}
代码:

for (var keys in a){
  for (var data in a[keys]){
    console.log(keys + " : "+ data)
  }
}
a是保存上述js对象的var


这是不可能的,因为同一级别的Javascript对象只能有唯一的键,所以它只会覆盖该值

建议: 使用这样的结构

{
  7ef:["3sdc", "12exf"],
  12ef:["8ecg"],
  10ef:["3ecf","3egf", "3elm", "3ecf", "3egf", "3elm"]
}
代码:

for (var keys in a){
  for (var data in a[keys]){
    console.log(keys + " : "+ data)
  }
}
a是保存上述js对象的var


更改PHP代码以生成更好的结构:

$lst = [];
foreach ($subscriptions as $subscription) {
    $lst[] = $subscription->uuid;
}
$anew[account[$i]] = $lst;
我想你有什么地方:

echo json_encode($anew);
这将为您提供以下JavaScript结构:

{
    "7ef": ["3sdc", "12exf"],
    "12ef": ["8ecg"],
    "10ef": ["3ecf","3egf", "3elm", "3ecf", "3egf", "3elm"]
}
要将其输出为CSV,您可以这样做(假设数据位于
响应中)

const响应={
“7ef”:[“3sdc”,“12exf”],
“12ef”:[“8ecg”],
“10ef”:[“3ecf”、“3egf”、“3elm”、“3ecf”、“3egf”、“3elm”]
};
const csv=Object.keys(response).reduce(acc,key)=>
acc.concat(响应[key].map(uuid=>[key,uuid].join(“,”))
,[])。加入(“\n”);

console.log(csv)更改PHP代码以生成更好的结构:

$lst = [];
foreach ($subscriptions as $subscription) {
    $lst[] = $subscription->uuid;
}
$anew[account[$i]] = $lst;
我想你有什么地方:

echo json_encode($anew);
这将为您提供以下JavaScript结构:

{
    "7ef": ["3sdc", "12exf"],
    "12ef": ["8ecg"],
    "10ef": ["3ecf","3egf", "3elm", "3ecf", "3egf", "3elm"]
}
要将其输出为CSV,您可以这样做(假设数据位于
响应中)

const响应={
“7ef”:[“3sdc”,“12exf”],
“12ef”:[“8ecg”],
“10ef”:[“3ecf”、“3egf”、“3elm”、“3ecf”、“3egf”、“3elm”]
};
const csv=Object.keys(response).reduce(acc,key)=>
acc.concat(响应[key].map(uuid=>[key,uuid].join(“,”))
,[])。加入(“\n”);


console.log(csv)假设目标数据结构是一个对象,那么这是不可能的,因为您不能有重复的属性名。与预期输出最接近的解决方案是对象数组。转换服务器上的数据并将其完全按照您的要求提供给JS也会更有意义。@Rorymcrossan通过创建一个新的索引字段?@ephemeral you can't It JSObject每个级别只能包含一个唯一键,因此它不能有7ef:“3sdc”,7ef:“12exf”(7ef已经存在,所以下次它将覆盖该值),使用这种结构“7ef”:[“3sdc”,“12exf”]@soumhsbanerjee any soloution,因为我想将此文件转换为csv。那么我该如何处理呢?@ephemeral更新了注释并添加了一个解决方案,希望它能有所帮助。如果目标数据结构是一个对象,那么这是不可能的,因为您不能有重复的属性名。与预期输出最接近的解决方案是对象数组。转换服务器上的数据并将其完全按照您的要求提供给JS也会更有意义。@Rorymcrossan通过创建一个新的索引字段?@ephemeral you can't It JSObject每个级别只能包含一个唯一键,因此它不能有7ef:“3sdc”,7ef:“12exf”(7ef已经存在,所以下次它将覆盖该值),使用这种结构“7ef”:[“3sdc”,“12exf”]@soumhsbanerjee any soloution,因为我想将此文件转换为csv。那么我该如何处理呢?@ephemeral更新了评论并添加了一个解决方案,希望它能帮助我使用javascript将这些数据转换成excel文件。此时,我需要重复account,那么我能做什么呢?请您解释一下行和列如何在csv/excellike'10ef'中排列,并具有多个订阅,这样10ef将在所有6个订阅中进入帐户列6次。@此代码可能会帮助您实现目标,并转换“a b c d”(将分隔的字符串分隔成字符串数组)可以使用.split(“”)methodi将使用javascript在excel文件中转换此数据。此时,我需要重复account,那么我可以做什么?请您解释如何在csv/excellike'10ef'is account中排列行和列,并具有多个订阅,这样10ef将在所有6个订阅中出现6次帐户列。@ephemeral此代码可能有助于实现该目标,并且要将“abcd”(间隔分隔的字符串转换为字符串数组),可以使用.split(“”)方法