如何在JavaScript中从数组提取单个对象(而非数组形式)
如何将数组处理为单个目标对象(而非数组包裹的对象)
你当前使用map方法得到的是数组包裹的对象结构,想要获取单个对象或者指定键值对形式,可通过以下方式修改代码:
情况1:数组仅包含单个元素
如果你的data数组只有一个元素,直接提取该元素转换即可:
方法1:直接访问数组索引
const data = [{ user_id: "10", dates: ["11/21/2022", "11/25/2022"], }]; const output = { [data[0].user_id]: data[0].dates }; console.log(output); // 输出:{ '10': ["11/21/2022", "11/25/2022"] }
方法2:解构数组元素
const data = [{ user_id: "10", dates: ["11/21/2022", "11/25/2022"], }]; const [item] = data; // 解构出数组第一个元素 const output = { [item.user_id]: item.dates }; console.log(output);
情况2:数组包含多个元素(需合并为单个对象)
如果data数组有多个用户数据,想要把所有用户的日期合并到一个对象中,使用reduce方法累加:
const data = [ { user_id: "10", dates: ["11/21/2022", "11/25/2022"] }, { user_id: "20", dates: ["12/01/2022"] } ]; const output = data.reduce((result, { user_id, dates }) => { result[user_id] = dates; return result; }, {}); // 初始值为空对象 console.log(output); // 输出:{ '10': ["11/21/2022", "11/25/2022"], '20': ["12/01/2022"] }
原代码问题说明
你之前用map方法会返回一个新数组,数组中的每个元素是处理后的对象,所以得到的是[{ '10': [...] }]这种数组包裹的结构。而我们需要单个对象,因此需要直接提取元素或者用reduce来构建目标对象。
内容的提问来源于stack exchange,提问作者Sharmae Reyes
相关产品推荐
相关产品推荐

