我想从带有更改键的javascript数组中获取php数组
我已经从excel文件生成了一个数组,并得到了这个结果 当前结果:这是我从excel文件中读取的结果我想从带有更改键的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
[
{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);