找出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
我需要确定数组中是否存在值.
我使用以下功能:
Array.prototype.contains = function(obj) {
var i = this.length;
while (i--) {
if (this[i] == obj) {
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
上面的函数总是返回false.
数组值和函数调用如下:
arrValues = ["Sam","Great", "Sample", "High"]
alert(arrValues.contains("Sam"));
Run Code Online (Sandbox Code Playgroud) 如果您已经使用过任何长度的JavaScript,那么您就知道Internet Explorer没有为Array.prototype.indexOf()[包括Internet Explorer 8]实现ECMAScript函数.这不是一个大问题,因为您可以使用以下代码扩展页面上的功能.
Array.prototype.indexOf = function(obj, start) {
for (var i = (start || 0), j = this.length; i < j; i++) {
if (this[i] === obj) { return i; }
}
return -1;
}
Run Code Online (Sandbox Code Playgroud)
我什么时候应该实现这个?
我应该使用以下检查将其包装在我的所有页面上,检查是否存在原型函数,如果不存在,请继续并扩展Array原型?
if (!Array.prototype.indexOf) {
// Implement function here
}
Run Code Online (Sandbox Code Playgroud)
或者浏览器检查,如果它是Internet Explorer,那么只需实现它?
//Pseudo-code
if (browser == IE Style Browser) {
// Implement function here
}
Run Code Online (Sandbox Code Playgroud) javascript internet-explorer cross-browser internet-explorer-8
我需要检查主数组中是否存在特定值.
var hideFilters = function() {
var listCategoryId = ['1000014', '1000015', '1000016', '1000017', '1000018', '1000019', '1000021', '1000086'];
var actualCategoryId = '1000018';
if (actualCategoryId === listCategoryId) {
console.log('is equal');
} else {
console.log('fuen... fuen...');
}
};
hideFilters();
Run Code Online (Sandbox Code Playgroud) 我有一个数组:
var something = ["1","2","3","4"] ;
Run Code Online (Sandbox Code Playgroud)
我会在提示中要求用户选择一个号码.如果它对应于数组中的任何值,则会触发某些内容.
我的问题是:我如何检查输入是否对应任何数组值?
if(something === "input"){
console.log("u picked a good number");
}
Run Code Online (Sandbox Code Playgroud)
当然,如果我现在的语句不正确,但我如何检查数组中的每个值,看看是否有任何对应的?
如果有人可以帮我这个,那真是太棒了!;)
thxx!
我一直在尝试为学校项目制作一个非常简单的搜索引擎,但我不知道如何将收到的用户输入(来自输入文本框的字符串)与数组中的数据(NodeList具有一堆名称的对象)。
我将详细说明我想要实现的目标:我有一个 HTML 页面,其中包含一个输入表单和一堆电影标题(格式),我想将用户在输入表单中键入的内容与电影进行比较页面上的标题。如果用户输入与其中一个电影标题匹配,我希望突出显示该电影,如果输入与任何电影不匹配,我只想弹出一个警告框,提示输入与任何电影都不匹配。
我一直在尝试这样做:
var All_Titles = document.getElementsByTagName("h3");
var User_Input = document.forms["search_form"];
function InputValidation() {
var x = document.forms["search_form"]["input_box"].value;
if (x == "" || x == null) {
alert("You haven't entered anything");
} else {
Search();
}
}
function Search() {
if (User_Input == All_Titles) {
document.writeln("It worked!");
} else {
alert("No matched movies");
}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我首先在名为“User_Input”的变量中捕获用户输入,并对电影标题执行相同的操作。
然后,我检查用户是否确实在搜索表单中输入了任何文本;如果他们没有这样做,他们会收到一条错误消息,如果他们这样做了,我将运行 Search() 函数,该函数的定义如下。
棘手的部分来了:我真的不知道如何将用户输入与我拥有的 进行比较!我已经用 If 语句进行了尝试,如您所见,但这似乎不起作用。
谁能帮助我解决这个问题?
我有以下
const A = ['test 105', 'test 300']
const B = [
{ name: 'test 105', id: 1 },
{ name: 'test 300', id: 2 },
{ name: 'test 3', id: 29 },
{ name: 'test 20', id: 20 }
]
Run Code Online (Sandbox Code Playgroud)
我需要检查 const B.name 是否等于 const A 中的任何值,并仅返回来自 const B 的匹配项。
所以我需要最后的回报
const B = [
{ name: 'test 105', id: 1 },
{ name: 'test 300', id: 2 }
]
Run Code Online (Sandbox Code Playgroud)
我能够用 1 个元素来做到这一点,但我想检查 const A,因为它将来可能有更多的值
const filtered = parsedResponse.filter(element …Run Code Online (Sandbox Code Playgroud)