用旧数组中的两列创建新数组

Men*_*nyg 10 javascript arrays object ecmascript-6

我有一个数组如下:

items = [
{"year": 2010, "month": 11, "day":23}
{"year": 2009, "month": 10, "day":15}
{"year": 2009, "month": 10, "day":10} //added after my edit below
]
Run Code Online (Sandbox Code Playgroud)

我只想像这样创建两列新数组:

newArarry = [
{"year": 2010, "month": 11}
{"year": 2009, "month": 10}
]
Run Code Online (Sandbox Code Playgroud)

目前,我正在尝试使用.map(),但无法正常工作:

const newArray = [];
newArray.map({
    year: items.year,
    month: items.month
});
Run Code Online (Sandbox Code Playgroud)

编辑

在遵循以下答案之一之后,我意识到我忘了提到我也需要将结果过滤为唯一的行。现在,我仅选择年和月列,因此获得了多个重复行

Cod*_*iac 6

目前我正在尝试使用.map()并且它不起作用

  • 因为newArray具有长度0,您正在尝试在其上进行映射
  • 地图接受回调,但您正在传递对象
  • 没有将map的输出分配给任何变量

let items = [{"year": 2010, "month": 11, "day":23},{"year": 2009, "month": 10, "day":15}]

let final = items.map(({day,...rest}) => ({...rest}))

console.log(final)
Run Code Online (Sandbox Code Playgroud)


Moh*_*man 5

Array 的.map()方法接受一个回调,其返回值将用于构造新数组。你错误地传递给它的是一个对象而不是一个函数。要解决此问题,您可以使用.map()一些对象解构:

const items = [
  {"year": 2010, "month": 11, "day":23},
  {"year": 2009, "month": 10, "day":15}
];

const result = items.map(({ year, month }) => ({year, month}));

console.log(result);
Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }
Run Code Online (Sandbox Code Playgroud)


VLA*_*LAZ 5

您打的电话不Array#map正确:

  1. 您需要在数组上调用items
  2. 您需要提供一个函数作为参数。
  3. Array#map 返回一个新数组,该数组是针对原始数组的每个成员执行该函数的结果。

items = [
{"year": 2010, "month": 11, "day":23},
{"year": 2009, "month": 10, "day":15}
]

const newArray = items.map(item => ({
    year: item.year,
    month: item.month
}));

console.log(newArray)
Run Code Online (Sandbox Code Playgroud)

映射操作从A变换到B -在这种情况下,从{"year": 2010, "month": 11, "day":23}{ "year": 2010, "month": 11 }.map在数组上运行会为您提供映射操作的结果。