相关疑难解决方法(0)

在Javascript中查找对象数组中的值

我之前已经问过类似的问题,但这个问题有点不同.我有一个未命名的对象数组,其中包含一个命名对象数组,我需要获取"name"为"string 1"的对象.这是一个示例数组.

var array = [
    { name:"string 1", value:"this", other: "that" },
    { name:"string 2", value:"this", other: "that" }
];
Run Code Online (Sandbox Code Playgroud)

更新:我应该早些说过,但是一旦找到它,我想用一个编辑过的对象替换它.

javascript arrays

320
推荐指数
12
解决办法
58万
查看次数

如何在JavaScript中为Internet Explorer浏览器修复Array indexOf()

如果您已经使用过任何长度的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

294
推荐指数
7
解决办法
17万
查看次数

为什么indexOf不能在IE8阵列上工作?

以下功能适用于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)

javascript internet-explorer indexof internet-explorer-8

291
推荐指数
5
解决办法
12万
查看次数

如何转义JSON字符串以将其包含在URL中?

使用Javascript,我想生成一个页面的链接.页面的参数位于我在JSON中序列化的Javascript数组中.

所以我想生成一个这样的URL:

http://example.com/?data="MY_JSON_ARRAY_HERE"
Run Code Online (Sandbox Code Playgroud)

如何转义我的JSON字符串(数组序列化)以将其作为URL中的参数包含?

如果有一个使用JQuery的解决方案,我会喜欢它.

注意:是的,页面的参数需要在一个数组中,因为它们有很多.我想我会用bit.ly来缩短之后的链接.

javascript url jquery json escaping

121
推荐指数
5
解决办法
15万
查看次数

jquery split()和indexOf导致"Object不支持此属性或方法"

我有以下代码:

var selected = $('#hiddenField').val().split(",");
...
if (selected.indexOf(id) > 0) {
   ... set value ...
}
Run Code Online (Sandbox Code Playgroud)

我正在动态创建一个CheckBoxList,并试图通过将所选ID放入隐藏字段来记住复选框的状态.

我收到一条错误,指出"对象不支持此属性或方法".我的假设是selected是一个数组,它应该支持indexOf.这是不正确的?

javascript arrays asp.net-mvc jquery split

16
推荐指数
2
解决办法
5万
查看次数

JavaScript数组是否具有Python的"if a in list"?

如果我在Python中有一个列表,我可以使用in运算符检查给定值是否在其中:

>>> my_list = ['a', 'b', 'c']

>>> 'a' in my_list
True

>>> 'd' in my_list
False
Run Code Online (Sandbox Code Playgroud)

如果我有一个JavaScript数组,例如

var my_array = ['a', 'b', 'c'];
Run Code Online (Sandbox Code Playgroud)

我可以用与Python in运算符类似的方式检查值是否在其中,还是需要循环遍历数组?

javascript python

11
推荐指数
2
解决办法
5325
查看次数

jquery.inArray()与Object.hasOwnProperty()之间的性能差异?

我有一种情况,我可以选择将字符串键的集合实现为对象:

$.each(objects, function (key, object) {
    collection[key] = "doesn't matter";
});
Run Code Online (Sandbox Code Playgroud)

或数组:

$.each(objects, function (key, object) {
    collection.push(key);
});
Run Code Online (Sandbox Code Playgroud)

我希望能够快速确定该集合是否包含给定密钥.如果collection是一个对象,我可以使用:

if (collection.hasOwnProperty(key_to_find)) { // found it!... }
else { // didn't find it... }
Run Code Online (Sandbox Code Playgroud)

如果collection是一个数组,我可以使用:

if ($.inArray(key_to_find, collection)) { // found it!... }
else { // didn't find it... }
Run Code Online (Sandbox Code Playgroud)

我想像使用JavaScript的内置hasOwnProperty会比jQuery的inArray()更快,但我不完全确定.有没有人更多地了解这两种方法之间的性能差异?或者,这里有一个我不知道的更有效的替代方案吗?

javascript performance jquery

9
推荐指数
1
解决办法
6117
查看次数

Javascript .indexOf无法处理int数组

码:

function showlayer(name){
    var size = js_array.length
    var index = js_array.indexOf(name);
    var plusOne = js_array[index+1];
    document.write("" + name + "<br />" + js_array + "<br />" + index + "<br />" +
                   plusOne + "<br />" )
    ...
}
Run Code Online (Sandbox Code Playgroud)

输出:

301
300,299,301,290,303,304,302,310,291,306,308,305,307,292,294,295,309
-1
300
Run Code Online (Sandbox Code Playgroud)

name的所有可能值都在数组中,但由于某种原因,indexOf()永远不会找到它们.这是怎么回事?

javascript indexof

9
推荐指数
1
解决办法
2万
查看次数

在IE中向Array.prototype添加函数会导致它作为元素被推入到每个数组中

Array在项目的开头添加了以下polyfill :

if (!Array.prototype.find) {
  Array.prototype.find = function(predicate) {
    if (this === null) {
      throw new TypeError('Array.prototype.find called on null or undefined');
    }
    if (typeof predicate !== 'function') {
      throw new TypeError('predicate must be a function');
    }
    var list = Object(this);
    var length = list.length >>> 0;
    var thisArg = arguments[1];
    var value;

    for (var i = 0; i < length; i++) {
      value = list[i];
      if (predicate.call(thisArg, value, i, list)) {
        return value;
      }
    }
    return undefined; …
Run Code Online (Sandbox Code Playgroud)

javascript internet-explorer-11

8
推荐指数
1
解决办法
5683
查看次数

为什么indexOf在Internet Explorer中不起作用?

此函数在表单onSubmit期间执行,并且在Firefox和Chrome中正常工作,但在IE中则不行.我怀疑它是indexOf,但我似乎找不到让它工作的方法.

function checkSuburbMatch(e) {

var theSuburb = document.getElementById('suburb').value;
var thePostcode = document.getElementById('postcode').value;

var arrayNeedle = theSuburb + " (" + thePostcode + ")";

if(suburbs.indexOf(arrayNeedle) != -1) {
    alert("Suburb and Postcode match!");
    return false;
} else {
    alert("Suburb and Postcode do not match!");
    return false;
}

}
Run Code Online (Sandbox Code Playgroud)

javascript internet-explorer indexof

6
推荐指数
2
解决办法
2万
查看次数