在Array of String javascript中处理多个字符串

时间:2017-07-21 07:38:44

标签: 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"
10ef:"3elm "

因为我必须发送它来制作它的csv文件。我怎么能用javascript做到这一点? 创建此代码就像

   foreach ($subscriptions as $subscription) {
    $str=$str.' '.$subscription->uuid;
    }$anew[account[$i]]=$str;

编辑: 现在看完评论后,有人可以告诉我如何才能使它像

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

就像我稍后会保存帐户一样,现在我想安排它们。

2 个答案:

答案 0 :(得分:2)

这是不可能的,因为同一级别的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

答案 1 :(得分:2)

更改您的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,您可以执行此操作(假设数据位于response):



const response = {
    "7ef": ["3sdc", "12exf"],
    "12ef": ["8ecg"],
    "10ef": ["3ecf","3egf", "3elm", "3ecf", "3egf", "3elm"]
};

const csv = Object.keys(response).reduce( (acc, key) =>
    acc.concat(response[key].map( uuid => [key, uuid].join(", ") ))
, []).join("\n"); 

console.log(csv);