Javascript 将数组值作为参数传递给函数并创建json数据
我有一个场景,将一个对象数组传递给nodejs中的一个函数,但由于未定义的错误,同样失败 以下是我尝试过的: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
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”