从数组中的所有对象获取特定键的值

use*_*030 15 javascript json node.js express

我正在运行一个express.js应用程序,它有一些api向下拉框提供数据.返回的数据采用以下形式:

  [
    {
        key: 'blah',
        value: 'Blah Blah'
    },
    {
        key: 'foo',
        value: 'Foos'
    },
    {
        key: 'bar',
        value: 'Bars'
    },
    {
        key: 'baz',
        value: 'Bazingo'
    }
];
Run Code Online (Sandbox Code Playgroud)

其中key是我的选项键,value是显示文本.这个数组的结构是固定的,我知道一个事实,我将始终拥有键和值作为数组中每个对象的字段.

当我尝试验证提交的表单(额外的服务器端验证)时,我想交叉引用为字段提供的值与数组中的"key"的所有值(blah,foo,bar,baz).鉴于这将是一个经常使用的路由,我想避免迭代遍历数组,以便每次都找到允许的值.有更简单的方法吗?换句话说,我知道我可以使用:

 permittedValues = [];
 for (i = 0; i < array.length; i++){
    permittedValues[i] = array[i]["key"];
 }
Run Code Online (Sandbox Code Playgroud)

但如果可能的话,我想避免这种情况.

PS:这似乎是一个基本问题,我在网上找到的答案并没有完全回答我的问题.所以,如果已经被要求和回答,请道歉.

Rud*_*die 35

你可以map:

permittedValues = array.map(function(value) {
  return value.key;
});
Run Code Online (Sandbox Code Playgroud)

在ES6/ES2015中,箭头功能更加漂亮:

permittedValues = array.map(value => value.key);
Run Code Online (Sandbox Code Playgroud)

它可能更漂亮,但它可能不比for()循环更快.


Isr*_*ina 7

如果您使用 ES6 javascript 版本,您可以执行如下操作:

const arrayData = [
    {
        key: 'blah',
        value: 'Blah Blah'
    },
    {
        key: 'foo',
        value: 'Foos'
    },
    {
        key: 'bar',
        value: 'Bars'
    },
    {
        key: 'baz',
        value: 'Bazingo'
    }
];
const foodBar = arrayData.find(item => item.key === "baz");
const resultValue = foodBar['value']; // here the extracted value is by key
Run Code Online (Sandbox Code Playgroud)


Bal*_*aji 7

纯 JavaScript ES6

array.map(value => value.key);
Run Code Online (Sandbox Code Playgroud)

下划线/Lodash

_.map(value,'key')
Run Code Online (Sandbox Code Playgroud)


Vra*_*nki 5

使用lodash,

由于lodash 4.x版的_.pluck功能,支持被删除映射功能。

因此,您可以通过以下方式完成所需的任务:

import _ from 'lodash'
_.map(items, 'key');
Run Code Online (Sandbox Code Playgroud)

参考文献:发生了什么事Lodash _.pluck?


Jer*_*NER 0

在当前版本的 Javascript 中,您需要对其执行循环操作。

但是,您可以使用像 npm `lodash' 这样的模块来使其看起来更简单

var _ = require('lodash')
var permittedValues = _.pluck(array, 'key')
Run Code Online (Sandbox Code Playgroud)

链接到 pluck 文档