Javascript 给定一个对象数组,查找具有特定键的对象

Javascript 给定一个对象数组,查找具有特定键的对象,javascript,jquery,arrays,underscore.js,Javascript,Jquery,Arrays,Underscore.js,给定一个对象数组,在JS中找到具有特定键的对象的最佳方法是什么 使用jQuery和下划线可以。我只是在寻找最简单/最少代码的答案 示例: 对象数组,其中每个对象都有一个“名称”。查找具有特定“名称”的对象 var people=[{name:“A”},{name:“B”},{name:“C”}] 我当前的解决方案: 传入数组、键(例如“name”)和值(例如“C”) 可以使用下划线.js的函数,如下所示 console.log(_.where(people, { "name": "C"

给定一个对象数组,在JS中找到具有特定键的对象的最佳方法是什么

使用jQuery和下划线可以。我只是在寻找最简单/最少代码的答案

示例: 对象数组,其中每个对象都有一个“名称”。查找具有特定“名称”的对象

var people=[{name:“A”},{name:“B”},{name:“C”}]

我当前的解决方案: 传入数组、键(例如“name”)和值(例如“C”)


可以使用下划线.js的函数,如下所示

console.log(_.where(people, {
    "name": "C"
}));
# [ { name: 'C' } ]

这将返回数组中的所有对象,这些对象与作为第二个参数传递的对象完全匹配。

您可以使用下划线.js函数,如下所示

console.log(_.where(people, {
    "name": "C"
}));
# [ { name: 'C' } ]
这将返回数组中的所有对象,这些对象与作为第二个参数传递的对象完全匹配。

使用:

如果希望数组中没有匹配的对象,请使用:

使用:

如果希望数组中没有匹配的对象,请使用:

您应该使用jQuery

var people = [{name: "A"}, {name: "B"}, {name: "C"}];

var obj1= jQuery.grep(people,function(n,i){return (n.name=='A')})
您应该使用jQuery

var people = [{name: "A"}, {name: "B"}, {name: "C"}];

var obj1= jQuery.grep(people,function(n,i){return (n.name=='A')})

没有任何自定义库,您也可以这样做。请看下面的代码

var people=[{name:“A”},{name:“B”},{name:“C”}],
匹配=功能(元素){
返回元素。名称==“A”;
};

console.log(people.filter(match))如果没有任何自定义库,也可以执行此操作。请看下面的代码

var people=[{name:“A”},{name:“B”},{name:“C”}],
匹配=功能(元素){
返回元素。名称==“A”;
};

console.log(people.filter(match))我很惊讶在这里找不到明显的答案,因此:要使用下划线,请使用:

不过,这不需要下划线;JavaScript的数组类型有
find
(从ES5开始):

从ES2015+开始,您可以使用箭头函数和分解结构使其更加简洁:

function getObject(myArray, searchKey, searchValue) {
    return myArray.find(({[searchKey]: value}) => value === searchValue);
}
最后一个实例:

函数getObject(myArray、searchKey、searchValue){ 返回myArray.find(({[searchKey]:value})=>value==searchValue); } const people=[{name:“A”},{name:“B”},{name:“C”}];
log(getObject(people,“name”,“C”)我很惊讶在这里找不到明显的答案,因此:要使用下划线,请使用:

不过,这不需要下划线;JavaScript的数组类型有
find
(从ES5开始):

从ES2015+开始,您可以使用箭头函数和分解结构使其更加简洁:

function getObject(myArray, searchKey, searchValue) {
    return myArray.find(({[searchKey]: value}) => value === searchValue);
}
最后一个实例:

函数getObject(myArray、searchKey、searchValue){ 返回myArray.find(({[searchKey]:value})=>value==searchValue); } const people=[{name:“A”},{name:“B”},{name:“C”}];
log(getObject(people,“name”,“C”)
您可能需要
过滤器
。太糟糕了,ES6还没有真正得到支持:
返回arr.find(el=>el[searchKey]==searchValue)
@Qantas94Heavy它仍在草稿中:(您可能需要
过滤器
。太糟糕了,ES6还没有真正得到支持:
返回arr.find(el=>el[searchKey]==searchValue);
@Qantas94Heavy它仍在草稿中:(谢谢@thefourtheye-计时器启动时我会接受答案。您是否知道如何从数组中删除此元素?似乎删除操作需要我知道数组中元素的索引。@DonnyP您可以使用
,如其他答案所示,这将生成一个没有不需要的元素的新数组。因此,我们可以n放弃旧数组,开始使用新数组。谢谢@thefourtheye-计时器启动时,我会接受答案。您是否知道如何从数组中删除此数组?似乎删除需要我知道数组中元素的索引。@DonnyP您可以使用
\uu.filter
,如其他答案所示,这将给出一个新数组没有不需要的元素。因此,我们可以抛弃旧数组,开始使用新数组。
filter
仅适用于所有匹配的数组。若要仅查找一个匹配,则为。
filter
仅适用于所有匹配的数组。若要仅查找一个匹配,则为。
function getObject(myArray, searchKey, searchValue) {
    return myArray.find(function(entry) { return entry[searchKey] === searchValue; });
}
function getObject(myArray, searchKey, searchValue) {
    return myArray.find(({[searchKey]: value}) => value === searchValue);
}