【发布时间】:2012-06-05 08:57:47
【问题描述】:
我有这个数组,其中每个索引都包含一个对象文字。所有对象字面量都具有相同的属性。一些对象文字对于给定属性具有相同的值,我想创建一个包含 only 那些对象文字的新数组。
我的想法是对数组进行排序,并将其切成一个新数组......
这是数组:
var arr = [];
arr[0] =
{
country: "United States",
num: 27
};
arr[1] =
{
country: "Australia",
num: 5
};
arr[2] =
{
country: "United States",
num: 7
};
所以,我想创建一个新数组,其中只包含属性country 为“美国”的对象。到目前为止,这是我的疯狂想法,但它不起作用:
function getNewArray(arr)
{
var arr2 = [];
for(var key in arr)
{
for(var i = 0; i < arr.length - 1; i++)
{
if(arr.hasOwnProperty(key) && arr[i].name == arr[i + 1].name)
{
arr2[i] = arr.slice(key);
}
}
}
return arr2;
}
var arr3 = getNewArray(arr).sort();
【问题讨论】:
-
您能否澄清您的问题:您的“美国”示例听起来像是您想指定一个国家/地区并仅返回该国家/地区的元素,但您的初始段落似乎在说结果应包括具有重复项的任何国家/地区。一些答案是一种方式,另一些是另一种方式(我刚刚更新了我的答案以涵盖两者)。也许您可以更新您的示例数组以包含两个以上的国家/地区?
-
对不起,我实际上是在尝试返回一个仅包含匹配值的数组。最近事实证明,我需要这样一种算法,它可以从一个数组中返回多个数组,每个数组只包含指定的匹配值..
标签: javascript arrays sorting slice object-literal