【问题标题】:Angular UI Typeahead - Using an array of Key/Value pairsAngular UI Typeahead - 使用键/值对数组
【发布时间】:2018-06-26 15:20:40
【问题描述】:

我似乎无法提前输入使用键/值对。由于每个键都不同,我只想将值显示为预输入值。

这是我尝试使用的数组示例:

[
   {"1":"partner1"},
   {"2":"partner2"},
   {"3":"partner3"},
   {"4":"partner4"}
]

那么,我应该如何遍历每个对象并仅获取每个对象的值(即“partner1”)以显示在预先输入的下拉列表中?

感谢您的帮助!

【问题讨论】:

    标签: javascript angularjs angular-ui-bootstrap angular-ui-typeahead


    【解决方案1】:

    var data = [
     {"1":"partner1"},
     {"2":"partner2"},
     {"3":"partner3"},
     {"4":"partner4"}
    ];
    for (var i = 0; i < data.length; i++) {
      data[i] = data[i][Object.keys(data[i])[0]];
    }
    console.log(data)

    总结:

    对于数组中的每个对象,获取第一个键。使用此键访问值并使用此值覆盖对象。

    【讨论】:

    • 这看起来非常痛苦。没有更简单的方法?
    • 可能还有其他的写法,但归根结底,它们都必须归结为这一点。您显然必须迭代数组(for 循环或迭代器)。然后你必须弄清楚你想要什么键(只有一个,所以就是那个)。然后您必须访问由该键索引的值。然后你必须保存那个值。可能有一些库可以使代码更短,但它们最终会做同样的事情,甚至更糟。
    【解决方案2】:
    let your_objects = [
       {"1":"partner1"},
       {"2":"partner2"},
       {"3":"partner3"},
       {"4":"partner4"}
    ]
    // Use a map to get all the values out into a list
    // and then use Array.flatten
    let nested_keys = Array.flatten(your_objects.map((obj) => Object.values(obj)));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多