Javascript 如何从单个数组创建多维数组或对象?

Javascript 如何从单个数组创建多维数组或对象?,javascript,jquery,arrays,Javascript,Jquery,Arrays,在过去的两个小时里,我一直在努力解决这个问题,但仍然找不到解决方案(也许我被阻止了!!) 我将从结果/输出的外观开始,如下所示: results = [ 'result_1' => [ "col_1" => "asc", "col_2" => "asc", "col_3" => "asc" ] ]; 到目前为止,我是这样做的: var ls_sort_keys = []; var ls_settings = {}; var l

在过去的两个小时里,我一直在努力解决这个问题,但仍然找不到解决方案(也许我被阻止了!!)

我将从结果/输出的外观开始,如下所示:

results = [
  'result_1' => [
      "col_1" => "asc",
      "col_2" => "asc",
      "col_3" => "asc"
  ]
];
到目前为止,我是这样做的:

var ls_sort_keys = [];
var ls_settings = {};
var ls_report_name = "<?php echo $report_name ?>";

<?php foreach ($header_array as $key => $value) { ?>
   ls_sort_keys.push("<?php echo $value; ?>");
<?php } ?>

ls_settings[ls_report_name] = {
    $.each(ls_sort_keys, function (key, value) {
        console.log(key, value);
    });
}
var ls_sort_key=[];
变量ls_设置={};
var ls_report_name=“”;
ls_sort_键。按(“”);
ls_设置[ls_报告_名称]={
$。每个(ls\u排序\u键,函数(键,值){
console.log(键、值);
});
}
console.log(ls\u sort\u key)
的结果是一个由三个值组成的数组,其中包含
[“col\u 1”、“col\u 2”、“col\u 3”]

我得到以下错误
Uncaught SyntaxError:意外的标记。
在这一行
$。每个(ls_sort_)键、函数(键、值)
我猜是因为不允许在其中出现这样的东西


话虽如此,如何将结果转换为输出?输出显示为数组,但可以是Javascript对象,因为它将存储在localStorage中,而且AFAIK不支持数组,只支持字符串。

您的最后一个循环确实应该创建一个对象。但是开头的
{
将被解释为对象文字的开头,但随后您继续操作,就好像它是代码块的开头一样。这是无效语法

相反,您可以使用
Object.assign
、计算属性语法和排列语法,如下所示:

ls_settings[ls_report_name] = Object.assign(
    ...ls_sort_keys.map(col => ({ [col]: "asc" }))
)
从PHP代码中剥离的演示:

var ls_sort_key=[];
变量ls_设置={};
变量ls\u report\u name=“report\u 1”;
ls_排序键。按下(“col_1”、“col_2”、“col_3”);
ls\u设置[ls\u报告\u名称]=对象.assign(
…ls_sort_keys.map(col=>({[col]:“asc”}))
)

console.log(ls_settings);
您的PHP循环运行服务器端,我看不出它如何运行Javscript
push()
(最后一个除外)尝试将其分配给类似
{items:$.each(…)}的属性
您想要的结果是无效的JavaScript。您也不能说
console.log,当您还说您有语法错误时,它会输出一些东西。不能两者都是。这个问题缺少重现问题所需的信息。@KevinBoucher您的意思是什么?执行
console.log(ls\u sort\u键)
我可以看到一个由三个元素组成的数组,这是那里的预期结果。我没有跟踪你。@ReynierPM,啊,我想我现在看到了。你的循环输出一系列ls\u sort\u key.push()调用,这些调用随后在客户端重新处理。