查询数组 javascript

Posted

技术标签:

【中文标题】查询数组 javascript【英文标题】:query to an array javascript 【发布时间】:2013-01-27 16:42:27 【问题描述】:

如何,例如我想查找所有以 A 开头的名称,然后显示所有信息

姓名":"阿尔伯特","年龄":"14" 姓名":"艾莉森","年龄":"14"

这是我的数组 json:

var house = ["Name":"Jason","age":"43",
"Name":"Albert","age":"14",
"Name":"Luck","age":"14",
"Name":"Alison","age":"14",
"Name":"Tom","age":"12"]

【问题讨论】:

【参考方案1】:

你可以使用Array.filter:

var result = house.filter(function(o) 
    return o.Name.indexOf("A") === 0;
);

某些旧浏览器可能不支持此方法。在 MDN 上查看the compatibility and the workaround。

【讨论】:

【参考方案2】:

您可以使用Array.prototype.filter

var names_beginning_a = house.filter(
    function (item) return item["Name"][0].toLowerCase() === 'a';
);

一旦你有了这个,你可以使用JSON.stringifyArray.prototype.map将你的数据转换成一个字符串

var dataAsString = names_beginning_a.map(
    function (item) return JSON.stringify(item); // optionally trim off  and 
);

【讨论】:

请注意,string[i] 访问方法是 not supported in older browsers(例如 IE 6 和 7)。如果您想确定,请使用string.charAt(i) @MattiasBuelens 如果他们不支持string[i],他们将不支持.map.filter.stringify,您需要对所有这些进行填充。 是的,我刚刚意识到这一点。不过,您可以选择仅使用 ECMAScript 5,或者填充这些新方法并使用 charAt【参考方案3】:

您可以过滤数组,以收集名称为“A”的元素,然后将匹配项映射到新的属性名称和值数组

house.filter(function(itm)
    return itm.Name.charAt(0)== 'A';
).map(function(o)
    var A= [];
    for(var p in o)
        if(o.hasOwnProperty(p))
            A.push(p+':'+o[p]);
        
    
    return A;
).join('\n');

/* 返回值:(字符串)*/

Name:Albert,age:14
Name:Alison,age:14

如果您需要垫片:

(function()
    var A= Array.prototype;
    if(!A.filter)   A.filter= function(fun, scope)
        var T= this, A= [], i= 0, itm, L= T.length;
        if(typeof fun== 'function')
            while(i<L)
                if(i in T)
                    itm= T[i];
                    if(fun.call(scope, itm, i, T)) A[A.length]= itm;
                
                ++i;
            
        
        return A;
    
    if(!A.map) A.map= function(fun, scope)
        var T= this, L= T.length, A= Array(L), i= 0;
        if(typeof fun== 'function')
            while(i<L)
                if(i in T)
                    A[i]= fun.call(scope, T[i], i, T);
                
                ++i;
            
            return A;
        
    

)();

【讨论】:

例如显示我使用 div $("#list").append(A) 的信息,但它在 1 行中显示了所有信息(姓名:阿尔伯特,年龄:14 姓名:艾莉森,age:14),我怎样才能向我显示 1 行数据? 添加 br 很简单:$("#list").append(A+"")【参考方案4】:

你也可以使用grep函数

arr = jQuery.grep(house, function (a)  return a.Name.indexOf("A") === 0; );

http://jsfiddle.net/vYZBb/

【讨论】:

以上是关于查询数组 javascript的主要内容,如果未能解决你的问题,请参考以下文章

JavaScriptJavaScript基础

javascriptjavascript常用函数大全

javascriptjavascript设计模式之工厂模式

JavaScriptJavascript闭包

JavaScriptJavascript闭包

JavaScriptJavaScript中的时间函数