【发布时间】:2016-11-02 09:10:15
【问题描述】:
我正在为 web 应用程序使用 mockData,并且我正在尝试遍历嵌套对象。我的问题是 for 循环有效但不是 array.map 并且不知道为什么。
这是for循环:
for (let i = 0; i < fakeChartData.length; i++) {
for (let j = 0; j < fakeChartData[i].poll.length; j++) {
if (fakeChartData[i].poll[j].id === id) {
return fakeChartData[i].poll[j]
}
}
}
这是地图循环:
fakeChartData.map(data => {
data.poll.map(data => {
if (data.id === id) {
return data;
}
});
});
我的数据结构:
fakeChartData = [
{
id: '232fsd23rw3sdf23r',
title: 'blabla',
poll: [{}, {}]
},
{
id: '23dgsdfg3433sdf23r',
title: 'againBla',
poll: [{}, {}]
}
];
我正在尝试使用 onClick 方法传递给它的 id 加载特定对象。 这是完整的功能:
export const fetchPollOptById = (id) =>
delay(500).then(() => {
for (let i = 0; i < fakeChartData.length; i++) {
for (let j = 0; j < fakeChartData[i].poll.length; j++) {
if (fakeChartData[i].poll[j].id === id) {
return fakeChartData[i].poll[j]
}
}
}
});
【问题讨论】:
-
你应该提供一个数据结构的例子......
-
运行情况如何?我们在测试中使用 array.map 时遇到问题。它们使用 jasmine 和 phantom.js 运行。 Phantom.js 似乎缺少对 array.map 的支持
-
考虑
map中的return语句从什么返回。 -
if 语句让我觉得你混淆了 .map() 和 .filter()。 map 应该 always 返回一个值,而 filter 用于返回一个数组,该数组只包含满足您的条件的元素
-
map做了一些完全不同的事情。你为什么要首先使用它? “我确实尝试过使用 .filter(),但它似乎返回的是原始数据而不是计算出来的数据” 就像你的代码一样。你的意思是什么?
标签: javascript loops for-loop dictionary ecmascript-6