Javascript 将数组值作为参数传递给函数并创建json数据

Javascript 将数组值作为参数传递给函数并创建json数据,javascript,arrays,node.js,json,loops,Javascript,Arrays,Node.js,Json,Loops,我有一个场景,将一个对象数组传递给nodejs中的一个函数,但由于未定义的错误,同样失败 以下是我尝试过的: var object = issues.issues //json data var outarr=[]; for(var key in object){ outarr.push(object[key].key) } console.log(outarr) // array is formed like this : ['a','b','c','d','e'] for(v

我有一个场景,将一个对象数组传递给nodejs中的一个函数,但由于未定义的错误,同样失败

以下是我尝试过的:

 var object = issues.issues //json data
 var outarr=[];
 for(var key in object){
   outarr.push(object[key].key) 
}
console.log(outarr) // array is formed like this : ['a','b','c','d','e']

for(var i =0; i<outarr.length;i++){  
jira.findIssue(outarr[i]) //here I am trying to pass the array objects into the loop one by one 
  .then(function(issue) {
    var issue_number = issue.key
    var ape = issue.fields.customfield_11442[0].value
    var description = issue.fields.summary
    var ice = issue.fields.customfield_15890[0].value
    var vice = issue.fields.customfield_15891.value
    var sor = issue.fields.labels
    if (sor.indexOf("testcng") > -1) {
      var val = 'yes'
} else {
  var val = 'yes'
}
var obj = {};
obj['ape_n'] = ape;
obj['description_n'] = description;
obj['ice_n'] = ice;
obj['vice_n'] = vice;
obj['sor_n'] = val;

var out = {}
var key = item;
out[key] = [];
out[key].push(obj);

console.log(out)
 } })
  .catch(function(err) {
    console.error(err);
  });


});
var object=issues.issues//json数据
var-outarr=[];
for(对象中的变量键){
outarr.push(对象[key].key)
}
log(outarr)//数组的格式如下:['a','b','c','d','e']
对于(变量i=0;i-1){
var val='是'
}否则{
var val='是'
}
var obj={};
obj['ape_n']=ape;
obj['description_n']=描述;
obj['ice_n']=冰;
obj['vice_n']=vice;
obj['sor_n']=val;
var out={}
var键=项目;
out[键]=[];
出[键]。推(obj);
console.log(注销)
} })
.catch(函数(err){
控制台错误(err);
});
});
我试图实现的目标是:我希望将数组值作为参数逐一传递,
jira.findissue
(基本上传递问题编号),它应该再次获取值并给出一个组合json输出。 如何在此函数中逐个传递此数组值,并在循环中运行
jira.findissue


任何帮助都会很好!!:-)

我已经看了你问题中的代码。 老实说,您编写的代码很混乱,并且包含一些简单的语法错误

一个很好的建议是使用一根短绒来避免这些错误。 有关过梁的更多信息,请参见此处:

要在一个数组中输出所有结果,必须在循环范围之外定义数组

我稍微整理了一下代码,并使用了一些es6特性。我不知道代码的上下文,但这是我可以理解的:

//map every value the key to outarr
let outarr = issues.issues.map( elm => elm.key);

//Output defined outside the scope of the loop
let output = [];

//looping outarr
outarr.forEach( el => {
    jira.findIssue(el).then(issue => {
        //creating the issue object
        let obj = {
            ape_n: issue.fields.customfield_11442[0].value,
            description_n: issue.fields.summary,
            ice_n: issue.fields.customfield_15890[0].value,
            vice_n: issue.fields.customfield_15891.value,
            sor_n: issue.fields.labels.indexOf("testcng") > -1 ? "yes" : "yes",
        };
        //pushing to the output
        output[issue.key] = obj;
    }).catch(err => {
        console.log(err);
    });
});

//ouputing the output
console.log(output);

有关es6功能的更多信息:

这给了我一个错误作为
SyntaxError:console.log(output)
@Thomas的输入意外结束
,你能把你的全部代码放在这个es6 linter()中并告诉我是否有任何错误吗?我编写的代码段没有语法错误,可能您忘记关闭我代码段上方代码中的if语句。让我知道结果是什么!:)我把它放在上面的链接中,然后它在同一个
console.log(output)
中给出了错误
SyntaxError:Unexpected token
,您忘记关闭某个东西(可能是if语句或循环)。你能把你的全部代码发布到某个地方吗?然后,我可以查看您的代码哪里出错。我通过关闭函数作用域解决了错误,但现在当我将数组元素传递给函数时,它给了我错误。它说
TypeError:Cannot read null的属性“0”