【发布时间】:2017-04-25 20:42:30
【问题描述】:
我最终想要做什么?
检查两个或多个国家/地区的国家关键字的新闻文章 JSON,并返回这些文章。
这有点复杂(至少对我来说),所以请多多包涵。
我目前正在从 API 接收新闻文章 JSON。我成功地使用下划线 _.map 来获取每个对象的描述键值。我将为关键字迭代这些值:
let combinedBing = this.bingWorldJSON.value.concat(this.bingPoliticsJSON.value);
let bingArray = _.map(combinedBing, 'description');
我正在检查我可能在另一个(动态)数组中的关键字的描述,称为事件。我为此使用 .map 方法。示例:
let event = ["United States", "Russia"]
let result = event.map(function(word){
return newArray.filter(function(article){
// console.log(article);
return article.toString().indexOf(word) > -1;
});
});
这会返回一个二维数组,如下所示:
[Array(4), Array(0)]
0:Array(4)
0:"No sign probes into Russia, Trump campaign will die down"
1:"Russian Hackers Who Targeted Clinton Appear to Attack France’s Macron"
2:"Senate Russia investigation to add 2 staffers"
3:"Former Trump adviser Flynn likely broke law with Russia trip: lawmakers"
length:4
__proto__:Array(0)
1:Array(0)
length:2
__proto__: Array(0)
但是,我不想只使用事件数组中的单词,因为它非常有限。为什么?因为返回的新闻文章并不总是使用严格的国家名称,而是经常具有语义等价物(即“U.S.”而不是“United States”,或“Russia's”而不是“Russia”)。
因为我的“事件”数组是动态创建的(并且我无法更改该数组中的严格国家名称),所以我将一个硬编码的等效关键字数组推送到另一个数组(如果该国家/地区存在于“事件”中)。因此,如果我的“事件”有
["United States, "Russia"]
我还将创建一个二维数组,如下所示:
[["United States", "U.S.", "US", "America"], ["Russia", "Russian", "Putin", "Moscow"]]
我没有使用 event.map(如上成功完成),而是试图弄清楚如何将每个数组(在二维数组中)的关键字映射到我返回的文章。不仅如此,还返回包含来自两个或多个国家/地区的关键字的文章。例如,如果一篇文章的关键字是“美国”和“莫斯科”,它将返回该文章以及包含这两个国家的关键字组合的任何其他文章。
我知道这可能看起来有点令人费解。但是因为我使用的这些 API 中没有关键字搜索,所以我尝试手动进行。
我非常感谢阅读本文所花费的耐心!感谢您提供有关如何解决此问题的任何帮助或想法。
【问题讨论】:
-
如何将您的事件和关键字数组合并到第三个数组中,然后将 map 函数与该新数组一起使用?
-
我会,但我认为 .map 不适用于多维数组。而且它也不会返回包含多个国家关键字的文章。我不认为。
-
展平阵列。制作单个一维数组:
["United States, "Russia", "U.S.", "US", "America", "Russian", "Putin", "Moscow"]
标签: javascript multidimensional-array ecmascript-6