代码试图在数组中找到给定句点的值,我不知道为什么包含逗号.
找到了正确的数组项,我想知道我的错误在哪里。
如何才能得到值,而不使用替换/拆分等?
我试过使用过滤器,但是那个过滤器返回2017-4,1287,12,也很奇怪。
console.log(period); // "2017-4"
console.log(data);
/*
[ [ '2015-1', 280, 1 ],
[ '2015-2', 21815, 2 ],
[ '2015-3', 27892, 3 ],
[ '2015-4', 49387, 4 ],
[ '2016-1', 29997, 5 ],
[ '2016-2', 31905, 6 ],
[ '2016-3', 37341, 7 ],
[ '2016-4', 30101, 8 ],
[ '2017-1', 37439, 9 ],
[ '2017-2', 31757, 10 ],
[ '2017-3', 943, 11 ],
[ '2017-4', 1287, 12 ],
[ '2018-1', 17462, 13 ],
[ '2018-2', 22617, 14 ],
[ '2018-3', 27882, 15 ] ]
*/
let actual = data.map(item => {
if (item[0] == period) return item[1];
});
console.log(actual); // ,,,,,,,,,,,1287,,,发布于 2018-09-24 11:22:54
您需要使用Array#find只获取数组的单个项。
Array#map创建一个具有未定义或period匹配的新数组。
var period = "2017-4",
data = [['2015-1', 280, 1], ['2015-2', 21815, 2], ['2015-3', 27892, 3], ['2015-4', 49387, 4], ['2016-1', 29997, 5], ['2016-2', 31905, 6], ['2016-3', 37341, 7], ['2016-4', 30101, 8], ['2017-1', 37439, 9], ['2017-2', 31757, 10], ['2017-3', 943, 11], ['2017-4', 1287, 12], ['2018-1', 17462, 13], ['2018-2', 22617, 14], ['2018-3', 27882, 15]],
actual = data.find(([p]) => p === period)[1];
console.log(actual);
发布于 2018-09-24 11:22:13
获得逗号是因为.map总是返回与原始数组长度相同的数组--当item[0]不等于period时,函数不会返回任何内容,因此返回undefined。(虽然我不知道为什么控制台没有显示这些显式的undefined值。)
如果只希望保留日期正确的值,则应该使用.filter而不是.map。(实际上,将.filter简化为所需的结果,然后对结果进行.map以获得第二个条目。)
https://stackoverflow.com/questions/52478177
复制相似问题