对象数组与分隔字符串数组的数组

Ric*_*nks 6 javascript arrays jquery

我需要创建一个可搜索项目数组,但我不确定是应该创建一个自定义对象数组还是只创建一个分隔字符串数组.有人可以给我一些建议,哪种方式更好.以下是一个例子:

var Arr = [  "Arts Tower|ArtsTower.htm|104", 
             "Arts Tower|ArtsTower.htm|1203", 
             "Arts Tower|ArtsTower.htm|Arts Tower"
          ];

var searchTerm = "tow"

var ArrResults = jQuery.grep(Arr, function(value, index){
 return (value.split("|")[2].toLowerCase().indexOf(searchTerm) != -1);
}); 
Run Code Online (Sandbox Code Playgroud)

要么

function Item(name, url, str){
  this.name = name;
  this.url = url;
  this.str= str;
}

var Arr = new Array();
Arr.push(new Item("Arts Tower", "ArtsTower.htm", "104"));
Arr.push(new Item("Arts Tower", "ArtsTower.htm", "1203"));
Arr.push(new Item("Arts Tower", "ArtsTower.htm", "Arts Tower"));

var searchTerm = "tow"

var ArrResults = jQuery.grep(Arr, function(value, index){
  return (value.str.toLowerCase().indexOf(searchTerm) != -1);
}); 
Run Code Online (Sandbox Code Playgroud)

我需要搜索数组并返回任何匹配项.哪个会表现得更好?

Ate*_*ral 3

使用数组和对象构造函数并将项目推送到数组是一种过度杀戮(对于像您这样的静态数据来说是不必要的)。

使用需要额外处理来解析的专有编码(使用管道分隔符)也是不利的。

我会使用文字形式的对象数组:

var Arr = [
    { name: "Arts Tower", url: "ArtsTower.htm", str: "104" },
    { name: "Arts Tower", url: "ArtsTower.htm", str: "1203" },
    { name: "Arts Tower", url: "ArtsTower.htm", str: "Arts Tower" }
];
Run Code Online (Sandbox Code Playgroud)

这也让您更接近希望通过 XHR ($.ajax) 加载数据的情况。