找出JavaScript数组是否包含对象的最简洁有效的方法是什么?
这是我知道的唯一方法:
function contains(a, obj) {
for (var i = 0; i < a.length; i++) {
if (a[i] === obj) {
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
有没有更好,更简洁的方法来实现这一目标?
这与Stack Overflow问题密切相关问题在JavaScript数组中查找项目的最佳方法是什么?它使用的方法寻找数组中的对象indexOf.
javascript arrays algorithm time-complexity javascript-objects
查找对象是否在数组中的最佳方法是什么?
这是我所知道的最佳方式:
function include(arr, obj) {
for(var i=0; i<arr.length; i++) {
if (arr[i] == obj) return true;
}
}
include([1,2,3,4], 3); // true
include([1,2,3,4], 6); // undefined
Run Code Online (Sandbox Code Playgroud) 除了可读性之外,使用之间是否存在任何可辨别的差异(可能性能)
str.indexOf("src")
Run Code Online (Sandbox Code Playgroud)
和
str.match(/src/)
Run Code Online (Sandbox Code Playgroud)
我个人更喜欢match(和regexp),但同事似乎走了另一条路.我们想知道它是否重要......?
编辑:
我应该在一开始就说过,这是用于执行部分普通字符串匹配的函数(在JQuery的类属性中获取标识符),而不是使用通配符等进行完整的正则表达式搜索.
class='redBorder DisablesGuiClass-2345-2d73-83hf-8293'
Run Code Online (Sandbox Code Playgroud)
所以它的区别在于:
string.indexOf('DisablesGuiClass-');
Run Code Online (Sandbox Code Playgroud)
VS
string.match(/DisablesGuiClass-/)
Run Code Online (Sandbox Code Playgroud) 我在Javascript中有一个对象数组:
function focal( name, data )
{
this.name = name;
this.data = data;
}
count = 0;
arrayFocal = [];
arrayFocal[count] = new focal( "Name", "12/08/2014" );
count++;
Run Code Online (Sandbox Code Playgroud)
现在我想找到arrayFocal名字
注意:IE 8
抱歉,如果这是重复的,但我似乎找不到解决方案。我正在尝试在数组中查找特定的字符串模式。我想在包含“下划线 r 下划线”的数据中找到所有值。然后我想创建一个只包含这些键和值的新数组。
var data = ["something", "bar_r_something"];
var resultArray = new Array();
for (var i = 0; i < data.length; i++) {
var bar = /_r_/;
if ($.inArray(bar, data[i].length) > 0)
{
console.log("found _r_");
resultArray.push(data[i]);
}
};
Run Code Online (Sandbox Code Playgroud)
我似乎无法让 $.inArray 工作,它似乎总是踢出 -1。