以下功能适用于Opera,Firefox和Chrome.但是,在IE8中它失败了if ( allowed.indexOf(ext[1]) == -1)
.
有谁知道为什么?有没有明显的错误?
function CheckMe() {
var allowed = new Array('docx','xls','xlsx', 'mp3', 'mp4', '3gp', 'sis', 'sisx', 'mp3', 'wav', 'mid', 'amr', 'jpg', 'gif', 'png', 'jpeg', 'txt', 'pdf', 'doc', 'rtf', 'thm', 'rar', 'zip', 'htm', 'html', 'css', 'swf', 'jar', 'nth', 'aac', 'cab', 'wgz');
var fileinput=document.getElementById('f');
var ext = fileinput.value.toLowerCase().split('.');
if ( allowed.indexOf(ext[1]) == -1)
{
document.getElementById('uploadsec').innerHTML = document.getElementById('uploadsec').innerHTML;
alert('This file type is not allowed!');
}
}
Run Code Online (Sandbox Code Playgroud) 例如,假设x = filename.jpg
我想知道filename
,哪里filename
可以是任何文件名(假设文件名只包含[a-zA-Z0-9-_]以简化.).
我x.substring(0, x.indexOf('.jpg'))
在DZone Snippets上看过,但效果会不会x.substring(0, x.length-4)
更好?因为,length
是一个属性,不进行字符检查,indexOf()
而是一个函数,并进行字符检查.
在javascript中,是否有一个等效的String.indexOf()为第一个第一个参数采用正则表达式而不是字符串,同时仍然允许第二个参数?
我需要做点什么
str.indexOf(/[abc]/ , i);
Run Code Online (Sandbox Code Playgroud)
和
str.lastIndexOf(/[abc]/ , i);
Run Code Online (Sandbox Code Playgroud)
虽然String.search()将regexp作为参数,但它不允许我指定第二个参数!
编辑:
事实证明这比我原先想象的要难,所以我编写了一个小测试函数来测试所有提供的解决方案......它假设regexIndexOf和regexLastIndexOf已被添加到String对象中.
function test (str) {
var i = str.length +2;
while (i--) {
if (str.indexOf('a',i) != str.regexIndexOf(/a/,i))
alert (['failed regexIndexOf ' , str,i , str.indexOf('a',i) , str.regexIndexOf(/a/,i)]) ;
if (str.lastIndexOf('a',i) != str.regexLastIndexOf(/a/,i) )
alert (['failed regexLastIndexOf ' , str,i,str.lastIndexOf('a',i) , str.regexLastIndexOf(/a/,i)]) ;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在测试如下以确保至少对于一个字符regexp,结果与我们使用indexOf时相同
//在xes
test('xxx')中查找a ;
试验( 'AXX');
试验( 'XAX');
试验( 'XXA');
试验( 'AXA');
试验( '的Xaa');
试验( 'AAX');
试验( 'AAA');
说我有这个
imageList = [100,200,300,400,500];
Run Code Online (Sandbox Code Playgroud)
哪能给我
[0]100 [1]200
等等
在JavaScript中有什么方法可以返回带有值的索引吗?
即我想要200的索引,我得到返回1.
我写了这个:
public static class EnumerableExtensions
{
public static int IndexOf<T>(this IEnumerable<T> obj, T value)
{
return obj
.Select((a, i) => (a.Equals(value)) ? i : -1)
.Max();
}
public static int IndexOf<T>(this IEnumerable<T> obj, T value
, IEqualityComparer<T> comparer)
{
return obj
.Select((a, i) => (comparer.Equals(a, value)) ? i : -1)
.Max();
}
}
Run Code Online (Sandbox Code Playgroud)
但我不知道它是否已经存在,是吗?
我一直在尝试寻找一种有效的方法,但我已经无处可去.我有一个对象数组,如下所示:
array[i].id = some number;
array[i].name = some name;
Run Code Online (Sandbox Code Playgroud)
我想要做的是找到id等于的对象的INDEXES,例如,0,1,2,3或4中的一个.我想我可以做类似的事情:
var indexes = [];
for(i=0; i<array.length; i++) {
(array[i].id === 0) ? { indexes[0] = i }
(array[i].id === 1) ? { indexes[1] = i }
(array[i].id === 2) ? { indexes[2] = i }
(array[i].id === 3) ? { indexes[3] = i }
(array[i].id === 4) ? { indexes[4] = i }
}
Run Code Online (Sandbox Code Playgroud)
虽然这可行,但它看起来相当昂贵且缓慢(更不用说丑陋),特别是如果array.length可能很大.关于如何修饰这一点的任何想法?我想过以某种方式使用array.indexOf,但我没有看到如何强制语法.这个
array.indexOf(this.id === 0);
Run Code Online (Sandbox Code Playgroud)
例如,返回undefined,因为它可能应该.提前致谢!
我已经尝试了一个多小时,无法找到正确的方法来做到这一点,虽然它可能很容易:
我有这样的事情: foo/bar/test.html
我想使用jQuery在最后一个之后提取所有内容/
.在上面的例子中,输出将是test.html
.
我想它可以使用substr
和完成indexOf()
,但我找不到一个有效的解决方案.
除非我错过了一个明显的内置方法,否则在字符串中第n次出现字符串的最快方法是什么?
我意识到我可以通过在循环的每次迭代中更新其起始索引来循环IndexOf方法.但这样做对我来说似乎很浪费.
我试图在另一个字符串中找到所有出现的字符串的位置,不区分大小写.
例如,给定字符串:
I learned to play the Ukulele in Lebanon.
和搜索字符串le
,我想获取数组:
[2, 25, 27, 33]
Run Code Online (Sandbox Code Playgroud)
两个字符串都是变量 - 也就是说,我不能对它们的值进行硬编码.
我认为对于正则表达式来说这是一个简单的任务,但经过一段时间的努力找到一个可行的表达式之后,我没有运气.
我找到了如何使用这个实例的例子.indexOf()
,但肯定有一个更简洁的方法来做到这一点?