【发布时间】:2020-08-19 04:12:22
【问题描述】:
我下面的代码工作正常,并提供了正确的所需输出。但我正在尝试使用地图、过滤器等而不是 for 循环。 Lodash 地图和过滤器也可以使用。
var arr = [
{"comp_id":1, desc: 'from comp1', updated: true},
{
"comp_id":2, desc: 'from comp2', updated: false}
];
var complaint_sources = [
{"comp_id":2,"consumer_source":"Hotline In","description_option":"English"},
{"comp_id":1,"consumer_source":"Online","description_option":"Other"},
{"comp_id":1,"consumer_source":"Email","description_option":null},
{"comp_id":2,"consumer_source":"Email","description_option":null}]
for(let i =0 ;i<arr.length;i++) {
let x=[];
for(let j=0;j<complaint_sources.length;j++){
if(arr[i].comp_id === complaint_sources[j].comp_id){
x.push(complaint_sources[j]);
arr[i].comp_src = x;
}
}
}
console.log(arr);
基本上,我在 arr 数组中循环,并在其中循环通过complaint_sources 数组,当comp_id 匹配时,我正在修改arr 数组并将comp_src 属性添加到arr 数组的对象中。这个 comp_src 属性将是一个由 comp_id 匹配的投诉源数组。
【问题讨论】:
-
请添加所需的输出
-
由于代码有效,您可以随时尝试codereview.stackexchange.com
-
那么您尝试使用
map和filter是什么? -
当您将
arr[i].comp_src = x;移出内部for循环时,可能更容易看到如何执行此操作(这样实际上每个arr[i]都会得到一个.comp_src,即使它是空数组)。
标签: javascript