从一组对象中提取键和值

时间:2016-03-28 11:12:12

标签: javascript arrays json multidimensional-array

我在谷歌搜索过这个问题,但没有找到合适的解决方案。

假设我有一个对象数组,如下所示 -

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.raswap.octomatic.E_shop">

    <ListView
        android:id="@+id/e_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</RelativeLayout>

现在从上面的数组我想提取一个特定对的关键值,以便我的结果如下所示 -

 "points":[{"pt":"Point-1","value":"Java, j2ee developer"},{"pt":"Point-2","value":"Experienced in Core Java, Spring, Hibernate, JPA, Big Data, SOA, BPEL"}]

我知道这可以使用手动循环来完成。但我不想循环。是否有可能使用lodash或其他api获得结果?

2 个答案:

答案 0 :(得分:2)

你可以map你的阵列:

var points = [
    { 'pt': 'Point-1', 'value': 'Java, j2ee developer' },
    { 'pt': 'Point-2', 'value': 'Experienced in ...' }
];

var result = points.map(function(p) {
    return { value: p.value };
});

答案 1 :(得分:1)

如果你使用的是最新版本的Javascript,你也可以在你的地图调用中使用解构,让你以优雅的方式提取你关心的属性。

points.map(({ value }) => ({ value }));

arrow函数将point个对象作为参数,并使用{ value }point.value属性解构为名为value的变量。

然后它返回一个速记对象文字,它使用value作为键和值。

使用Babel编译时,我们得到:

points.map(function (_ref) {
  var value = _ref.value;
  return { value: value };
});