【问题标题】:Merge two arrays into an array of objects with property values将两个数组合并为具有属性值的对象数组
【发布时间】:2015-04-26 14:38:27
【问题描述】:

需要生成如下的JSON:

{ applicationName :'appName1', frequency:'00'},
{ applicationName :'appName2', frequency:'3'},
{ applicationName :'appName3', frequency:'25'},
{ applicationName :'appName4', frequency:'54'}

scope.appApplications - 它是一个 JSON 对象,我将其拆分为两个数组。 我有两个数组,如下所示。需要合并它们(应用程序名称 [] 和频率 [])并提供如上所示的输出。如何做到这一点?

var frequencies = [];
var applicationName = [];
angular.forEach(scope.appApplications, function (value, key) {
           frequencies.push(value);
           applications.push(key);
 })

【问题讨论】:

  • 没有“JSON 对象”这样的东西。 JSON 就像 XML。这是一个字符串。
  • 你能展示一下$scope.applications的结构吗?
  • 您是说频率和应用程序名称由 scope.appApplications 填充,然后从这两个数组中创建所需的合并数组?
  • 需要生成如下的 JSON - 这不是有效的 JSON。尝试使用(例如)jsonformatter.org

标签: javascript


【解决方案1】:

如果您愿意使用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}

【讨论】:

  • 这个,或者它在 lodash 中的等价物,是我的做法。 +1。
  • 请注意,从 lodash v0.4.0 开始,它现在是 zipObject lodash.com/docs#zipObject
【解决方案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});
 })

【讨论】:

  • 谢谢!这有帮助。
【解决方案3】:

假设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]
  };
});

【讨论】:

    猜你喜欢
    • 2019-06-05
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 2016-04-17
    相关资源
    最近更新 更多