需要生成如下的JSON:
{ applicationName :'appName1', frequency:'00'},
{ applicationName :'appName2', frequency:'3'},
{ applicationName :'appName3', frequency:'25'},
{ applicationName :'appName4', frequency:'54'}
scope.appApplications - 它是一个JSON对象,我将其拆分为两个数组。 我有两个数组如下。需要合并它们(applicationName []和频率[])并带有如上所述的输出。怎么办呢?
var frequencies = [];
var applicationName = [];
angular.forEach(scope.appApplications, function (value, key) {
frequencies.push(value);
applications.push(key);
})
答案 0 :(得分:5)
如果您愿意使用underscore,可以将其作为单个链接功能调用来执行此操作:
_.zip(applicationName,frequencies).map(function(pair) {
return _.object(["applicationName","frequency"],pair);
});
_.zip()
将['a','b','c']
和[1,2,3]
变为[['a',1],['b',2],['c',3]]
。
Array.map()
在数组的每个成员上调用一个函数,并返回结果数组。
_.object()
将["applicationName","frequency"]
和['a',1]
变为{applicationName: 'a', frequency: 1}
。
答案 1 :(得分:2)
你可以拥有另一个变量(比如targetJson)来保存你的目标json。像这样的东西。
var frequencies = [];
var applicationName = [];
var targetJson = [];
angular.forEach(scope.appApplications, function (value, key) {
frequencies.push(value);
applications.push(key);
targetJson.push({applicationName :key, frequency:value});
})
答案 2 :(得分:1)
假设scope.appApplications
是一个对象,其中键是应用程序名称,值是频率,您可以执行以下操作:
var frequencies = [];
var applicationName = [];
var mergedArray = Object.keys(scope.appApplications).map(function (key) {
frequencies.push(scope.appApplications[value]);
applications.push(key);
return {
applicationName: key,
frequency: scope.appApplications[value]
};
});