javascript - 使用标题破坏

标签 javascript arrays destructuring

我已经使用解构回答了一些问题,我只是想将这个问题提升到一个新的水平

我不想在这个例子中使用reduce,而是尽可能使用纯粹的破坏

所以数据的第一行包含对象的属性名称,我如何使用它来保持干燥

即我希望

const obj = data.slice(1).map((titles) => ({ titles }) )

或类似

所以这可行,但我还错过了一步:

const data = [
    ["fruits","frozen","fresh","rotten"],
    ["apples",884,494,494],
    ["oranges",4848,494,4949],
    ["kiwi",848,33,33]
]
const titles = data[0]; // not used below but I want to use it
const obj = data.slice(1).map(([fruits,frozen,fresh,rotten]) => ({ fruits,frozen,fresh,rotten }) )
console.log(obj)

最佳答案

您可以映射对象的条目。

const
    data = [["fruits", "frozen", "fresh", "rotten"], ["apples", 884, 494, 494], ["oranges", 4848, 494, 4949], ["kiwi", 848, 33, 33]],
    mapWith = keys => values => Object.fromEntries(keys.map((k, i) => [k, values[i]])),
    getArray = ([keys, ...data]) => data.map(mapWith(keys)),
    array = getArray(data);

console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }

旧的更简单的例子

const data = [
  ["fruits", "frozen", "fresh", "rotten"],
  ["apples", 884, 494, 494],
  ["oranges", 4848, 494, 4949],
  ["kiwi", 848, 33, 33]
]
const titles = data[0];

const obj = data.slice(1).map(
  arr => Object.fromEntries(
    titles.map( 
      (t, i) => [t, arr[i]] 
    )
  )
);

console.log(obj);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 使用标题破坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62197270/

相关文章:

javascript - Jquery Cookie插件,检查cookie是否未设置

javascript - NodeJS中通过URL发送的参数数量

javascript - 在 v8 中实现无限列表

javascript - 是否可以在 JavaScript 构造函数中解构实例/成员变量?

javascript - 在对象数组上切片对象的最高性能

javascript - react Hook : How do I update state on a nested object with useState()?

javascript - 传递数组数据

javascript - IE 对 HTMLDocument 和 HTMLElement 有什么看法

c# - 使用星号的图表(循环、数组)

php - 在 Php 中将用户数据作为对 array_walk_recursive 的引用传递