concat 2以angular / js列出

时间:2016-02-07 13:04:23

标签: javascript angularjs

我有两个"列表"。 第一个只包含代码的数组,如下所示:

[10, 50, 75, 88]

秒,包含所有代码的列表+表示可能,并且如下所示:

[
  {  
    code: 10,
    name: 'example 10'
  },
  {
    code: 50,
    name: 'example 50'
  },
  {
    code: 60,
    name: 'example 60'
  },
  {
    code: 66,
    name: 'example 66'
  },
  {
    code: 75,
    name: 'example 75'
  },
  {
    code: 88,
    name: 'example 88'
  }
]

我想附加第二个列表中的解释,用于第一个数组的每个项目。

例如,结果应为:

[
  {  
    code: 10,
    name: 'example 10'
  },
  {
    code: 50,
    name: 'example 50'
  },
  {
    code: 75,
    name: 'example 75'
  },
  {
    code: 88,
    name: 'example 88'
  }
]

或:

['10- examle 10', '50 - example 50', '75 - example 75', '88 - example 88']

我更喜欢第一个版本,但第二个版本还不错...... 我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

如果您希望输入列表中的每个项找到与匹配代码对应的名称,我建议将spec / mapping数组转换为code: name对象。

例如,使用.map.reduce数组方法(如果需要支持IE8,请检查polyfill的链接):



var list = [10, 50, 75, 88]
var spec = [{"code":10,"name":"example 10"},{"code":50,"name":"example 50"},{"code":60,"name":"example 60"},{"code":66,"name":"example 66"},{"code":75,"name":"example 75"},{"code":88,"name":"example 88"}]

// convert spec to {"10":"example 10", ...}
var spec_obj = spec.reduce(function(previous, current) {
  previous[current.code] = current.name
  return previous
}, {})

var annotated = list.map(function(item) {
  return item + ' - ' + spec_obj[item]
})

console.log(annotated)