Javascript 从数组中的所有对象获取特定键的值
我正在运行一个express.js应用程序,它有一些API将数据提供给下拉框。返回的数据格式如下: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',
[
{
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')