首页 > 解决方案 > 我想从更改键的 javascript 数组中获取 php 数组

问题描述

我从一个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);
    }
}

我已经在另一个函数中调用了该函数。

changekeys(newArr);

我不断收到错误消息,未定义“昵称”。

标签: javascript

解决方案


这可以使用reduce函数来实现

function changekeys(arr) {
    return arr.reduce((result, person) => {
       result[person.nickname] = {
           name: person.name,
           occupation: person.occupation,
           age: person.age
       }
       return result;
    }, {})
}

const data = [
  {name: "mike floss", occupation: "student", age: 19, nickname: "mike", __rowNum__: 1},
  {name: "john blake", occupation: "student", age: 20, nickname: "john", __rowNum__: 1},
  {name: "dan brown", occupation: "police officer", age: 25, nickname: "dan", __rowNum__: 1}
]

console.log(changekeys(data))


推荐阅读