Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从数组中的所有对象获取特定键的值_Javascript_Json_Node.js_Express - Fatal编程技术网

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

Javascript 从数组中的所有对象获取特定键的值,javascript,json,node.js,express,Javascript,Json,Node.js,Express,我正在运行一个express.js应用程序,它有一些API将数据提供给下拉框。返回的数据格式如下: [ { key: 'blah', value: 'Blah Blah' }, { key: 'foo', value: 'Foos' }, { key: 'bar', value: 'Bars' }, { key: 'baz',

我正在运行一个express.js应用程序,它有一些API将数据提供给下拉框。返回的数据格式如下:

  [
    {
        key: 'blah',
        value: 'Blah Blah'
    },
    {
        key: 'foo',
        value: 'Foos'
    },
    {
        key: 'bar',
        value: 'Bars'
    },
    {
        key: 'baz',
        value: 'Bazingo'
    }
];
其中key是我的选项key,value是显示文本。这个数组的结构是固定的,我知道数组中每个对象的字段总是key和value

当我尝试验证提交的表单(附加服务器端验证)时,我希望对照数组中“key”的所有值(blah、foo、bar、baz)交叉引用为字段提供的值。鉴于这将是一个经常使用的路由,我希望避免每次迭代数组以查找允许的值。有没有更简单的方法?换句话说,我知道我可以使用:

 permittedValues = [];
 for (i = 0; i < array.length; i++){
    permittedValues[i] = array[i]["key"];
 }
permittedvalue=[];
对于(i=0;i
但如果可能的话,我想避免这个for循环


附言:这似乎是一个基本问题,我在网上找到的答案并没有完全回答我的问题。因此,如果您已经询问并回答了此问题,请道歉。

在当前版本的Javascript中,您需要对其进行循环

不过,您可以使用npm“lodash”之类的模块使其看起来更简单

var _ = require('lodash')
var permittedValues = _.pluck(array, 'key')
您可以:

在ES6/ES2015中,它更漂亮,包括:


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

您可以通过map提取值,并将它们形成正则表达式以匹配值

例如:

使用lodash

自lodash 4.x以来,为了支持映射功能,删除了u0.pulk函数

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

import _ from 'lodash'
_.map(items, 'key');

Ref:

如果您使用的是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

试试这个..

const myArray=[
{
关键:“废话”,
价值观:“诸如此类”
},
{
键:“foo”,
值:“Foos”
},
{
键:“bar”,
值:“条”
},
{
键:“baz”,
价值:“巴金戈”
}
];
const resObject=myArray.find(item=>item.key==“foo”);
//在这里,您可以访问所需的对象
console.log(resObject)纯Javascript ES6

array.map(value => value.key);
下划线/洛达斯

_.map(value,'key')

没有循环是不可能的。您可以使用,但在内部它将使用一些循环。
Pull
不再是lodash函数=(
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
array.map(value => value.key);
_.map(value,'key')