我有一个如下数组:
items = [
{"year": 2010, "month": 11, "day":23}
{"year": 2009, "month": 10, "day":15}
{"year": 2009, "month": 10, "day":10} //added after my edit below
]
我只想创建一个只有两个列的新数组:
newArarry = [
{"year": 2010, "month": 11}
{"year": 2009, "month": 10}
]
现在我正在尝试使用.map(),但它不起作用:
const newArray = [];
newArray.map({
year: items.year,
month: items.month
});
编辑
遵循以下答案之一后,我意识到我忘了提到我也需要将结果过滤为唯一的行。现在,我只选择年和月列,就得到了多个重复行
答案 0 :(得分:5)
现在我正在尝试使用.map(),但无法正常工作
L = ['1', '42', 'Konya', '40.838', '42', '62', 'Tunceli', '7.582']
df = pd.DataFrame(np.array(L).reshape(-1, 4), columns=['code1','code2','city','area'])
print (df)
code1 code2 city area
0 1 42 Konya 40.838
1 42 62 Tunceli 7.582
,而您正在尝试在其上进行映射
0
答案 1 :(得分:4)
您没有正确拨打Array#map
:
import package
package.function()
。 items
返回一个新数组,该数组是针对原始数组的每个成员执行该函数的结果。
Array#map
A mapping 操作从A转换为B-在这种情况下,从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)
转换为{"year": 2010, "month": 11, "day":23}
。在数组上运行{ "year": 2010, "month": 11 }
会给您映射操作的结果。
答案 2 :(得分:2)
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);
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 3 :(得分:2)
Array.map()
希望将回调作为第一个参数,还必须在原始数组上调用它-否则,您实际上是在空数组上进行迭代。
var newArray = items.map(function (item) {
return {
year: item.year,
month: item.month
};
});
更新
为了确保您的数组仅包含唯一值,而不是映射和过滤,可以执行以下操作:
var items = [
{year: 2010, month: 11, day: 23},
{year: 2009, month: 10, day: 15},
{year: 2009, month: 10, day: 10}
];
var newArray = [];
items.forEach(function (item) {
var index = newArray.findIndex(function (newItem) {
return newItem.year === item.year && newItem.month === item.month;
});
if (index === -1) {
newArray.push({ year: item.year, month: item.month });
}
});
console.log(newArray); // [{ year: 2010, month: 11 }, { year: 2009, month: 10 }]
答案 4 :(得分:1)
您没有正确使用map
-您还可以通过休息,传播和破坏来简化操作:
const items = [{"year": 2010, "month": 11, "day":23},{"year": 2009, "month": 10, "day":15}];
const newArray = items.map(({ day, ...res }) => ({ ...res }));
console.log(newArray);
.as-console-wrapper { max-height: 100% !important; top: auto; }
答案 5 :(得分:0)
更正您的项目数组,具有多个元素/值的数组必须用逗号分隔
var items = [{"year": 2010, "month": 11, "day":23},
{"year": 2009, "month": 10, "day":15}]
const newArray = [];
items.map(i=>{
newArray.push({year: i.year, month: i.month});
});
console.log(newArray);