首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >映射数组返回逗号

映射数组返回逗号
EN

Stack Overflow用户
提问于 2018-09-24 11:18:27
回答 2查看 65关注 0票数 1

代码试图在数组中找到给定句点的值,我不知道为什么包含逗号.

找到了正确的数组项,我想知道我的错误在哪里。

如何才能得到值,而不使用替换/拆分等?

我试过使用过滤器,但是那个过滤器返回2017-4,1287,12,也很奇怪。

代码语言:javascript
复制
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,,,
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-24 11:22:54

您需要使用Array#find只获取数组的单个项。

Array#map创建一个具有未定义或period匹配的新数组。

代码语言:javascript
复制
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);

票数 4
EN

Stack Overflow用户

发布于 2018-09-24 11:22:13

获得逗号是因为.map总是返回与原始数组长度相同的数组--当item[0]不等于period时,函数不会返回任何内容,因此返回undefined。(虽然我不知道为什么控制台没有显示这些显式的undefined值。)

如果只希望保留日期正确的值,则应该使用.filter而不是.map。(实际上,将.filter简化为所需的结果,然后对结果进行.map以获得第二个条目。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52478177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档