gpt4 book ai didi

javascript - 在 javascript 数组中搜索项目的最佳方法

转载 作者:行者123 更新时间:2023-11-28 13:47:35 25 4
gpt4 key购买 nike

我有一个 JavaScript 对象数组。这些对象包含一些属性,看起来像这样:

  { "Name" : "blabla", "Id": "1" }

现在我有一个函数,它接受一个参数,该参数将是对象的 Name 属性值。该函数看起来像这样:

     function CheckForExistance(array, name){
var exist = false;

$.each(array, function(index, value){
if(value.Name == name)
{
exist = true;
return false;
}
});
return exist;
}

我想知道是否有更好的方法来做到这一点?

最佳答案

您可以使用 $.grep() 过滤数组以找到匹配项,并返回 .length 的比较结果。

 function CheckForExistance(array, name){
return $.grep(array, function(obj) {
return obj.Name == name;
}).length > 0;
}

或者 native 方法在我看来要好一些,但是您需要一个适用于旧浏览器的填充程序。

function CheckForExistance(array, name){
return array.some(function(obj) {
return obj.Name == name;
});
}

这个使用了Array.prototype.some,一旦给出一个真实的返回值就会退出,然后返回true。如果没有找到 true 返回值,那么它将返回 false

<小时/>

FWIW,您还可以通过提供动态属性名称来使您的函数更加健壮。

function CheckForExistance(array, prop, val){
return array.some(function(obj) {
return obj[prop] == val;
});
}

然后用它来检查任何属性值。

var found = CheckForExistance(myArray, "Name", "blabla");
<小时/>

或者另一种方法是创建一个函数工厂来创建与迭代器一起使用的函数。

function havePropValue(prop, value) {
return function(obj) {
return obj[prop] == value;
};
}

然后我们可以直接使用.some(),而不需要CheckForExistance函数。

var found = myArray.some(havePropValue("Name", "blabla"));

或者使用$.grep

var found = $.grep(myArray, havePropValue("Name", "blabla")).length > 0;

关于javascript - 在 javascript 数组中搜索项目的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13111074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com