我想从带有更改键的javascript数组中获取php数组

我想从带有更改键的javascript数组中获取php数组,javascript,Javascript,我已经从excel文件生成了一个数组,并得到了这个结果 当前结果:这是我从excel文件中读取的结果 [ {name: "mike floss", occupation: "student", age: 19, nickname: "mike", __rowNum__: 1}, {name: "john blake", occupation: "student", age: 20, nickname: "john", __rowNum__: 2}, {name: "dan brown

我已经从excel文件生成了一个数组,并得到了这个结果

当前结果:这是我从excel文件中读取的结果

[
  {name: "mike floss", occupation: "student", age: 19, nickname: "mike", __rowNum__: 1},
  {name: "john blake", occupation: "student", age: 20, nickname: "john", __rowNum__: 2},
  {name: "dan brown", occupation: "police officer", age: 25, nickname: "dan", __rowNum__: 3}
]
预期结果:这就是我想要得到的,我使用json_encode()来显示它

{
  dan: {name: "dan brown", occupation: "police officer", age: 25},
  john: {name: "john blake", occupation: "student", age: 20},
  mike: {name: "mike floss", occupation: "student", age: 19}
}
这就是我尝试过的

function changekeys(arr) {
    for (var i = 0; i < arr.length; i++) {
        const mapped = arr.reduce((acc, item) => {

            if (!acc.hasOwnProperty(item[i]['nickname'])) {
                acc[item[i]['nickname']] = [];
            }

            acc[item[i]['nickname']].push(item);

            return acc;

        }, {});

        console.log(mapped);
    }
}

我一直收到错误,“昵称”未定义。

我假设,由于累加器中有数组,您打算这样做吗

const arr=[
{“姓名”:“迈克·弗洛斯”,“occ”:“学生”,“昵称”:“迈克”},
{“姓名”:“约翰·布莱克”,“occ”:“学生”,“昵称”:“约翰”},
{“name”:“john something other”,“occ”:“bla”,“昵称”:“john”},
{“姓名”:“丹·布朗”,“occ”:“警察”,“昵称”:“丹”}
]
常量映射=arr.reduce((附件,项目)=>{
const nick=item.昵称;
如果(!acc[nick])acc[nick]=[项目];
else acc[nick]。推送(项目);
返回acc;
}, {});

console.log(映射)这可以通过使用
reduce
功能实现

功能切换键(arr){
返回arr.reduce((结果,人员)=>{
结果[个人昵称]={
姓名:person.name,
职业:个人职业,
年龄:人
}
返回结果;
}, {})
}
常数数据=[
{姓名:“迈克·弗洛斯”,职业:“学生”,年龄:19岁,绰号:“迈克”,“罗纳姆”,“1},
{姓名:“约翰·布莱克”,职业:“学生”,年龄:20岁,昵称:“约翰”,“罗纳姆”1},
{姓名:“丹·布朗”,职业:“警官”,年龄:25岁,绰号:“丹”,“罗纳姆”,“1}
]

log(changekeys(data))
那么,您只想将数字键更改为昵称?为什么要循环并减少。看起来reduce是你唯一需要的东西是的,如果可能的话,我想把它变成一个php数组。我使用了循环,这样我可以得到索引0、1和2。你的浏览器不知道什么是php。这是一个好主意。在呈现Javascript时,PHP已经过时了。如果您想在PHP中获得这些信息,那么请使用PHP读取excel文件。这不是很优雅。参见我的第二个示例
changekeys(newArr);