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