我有这个数组,其中的每个索引都包含一个对象文本。所有的对象文本都具有相同的属性。对于给定的属性,一些对象文本具有相同的值,我想创建一个只包含这些对象文本的新数组。
我的想法是对数组进行排序,并将其切成一个新的数组...
以下是数组:
var arr = [];
arr[0] =
{
country: "United States",
num: 27
};
arr[1] =
{
country: "Australia",
num: 5
};
arr[2] =
{
country: "United States",
num: 7
};
所以,我想创建一个新的数组,只包含那些属性country
为“United States”的对象。这是我到目前为止疯狂的想法,不管用:
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();
我想创建一个新数组,只包含那些属性国家为“美国”的对象
这正是array.filter()
方法的作用:
var filteredArray = arr.filter(function(val, i, a) {
return val.country==="United States";
});
请注意,.filter()
方法在版本9之前的IE中是不可用的,但是我链接到上面的MDN页面向您展示了如何实现它,因此阅读该页面本身就可以回答您的问题。
好的,重读这篇文章,我想你并不是真的想通过指定一个国家来选择元素,你想为任何有重复条目的国家选择元素?所以,如果有另外三个元素都有“新西兰”,除了“美国”之外,你会想选择它们吗?如果是这样,您可以这样做:
var countryCount = {},
i;
for (i = 0; i < arr.length; i++)
if (countryCount.hasOwnProperty(arr[i].country)
countryCount[arr[i].country]++;
else
countryCount[arr[i].country] = 1;
var filteredArr = arr.filter(function(val, i, a) {
return countryCount[val.country] > 1;
});
所以我看了几个解决方案,但没有一个对我有效。感谢一些人,我最终得到了无限循环,但它仍然对我不起作用。我想将文件“output.txt”读入对象列表。所以我提供了剩下的代码,因为我认为它们不会有任何帮助... 错误消息如下: java.io.StreamCreptedException:无效的流头:3134313b,位于java.io.objectinPutStream.ReadStreamHead
在这里,我试图通过使用来填充我的对象数组。问题是,我得到了一个错误,指出数组在1处超出了索引 此外,文件中的每个标记都由一个空格分隔,这样我就可以在字符串数组中拆分标记,并在属性上进行拆分 文件内容 (名称,作者,发布,编号,版权,科学) 那么有人能帮我写代码吗?或者甚至建议另一种方法?
我正在使用javascript定义对象数组,并希望根据对象属性删除值。 我用了下面的代码: 预期结果:当我删除值时,它应该给我一个包含0个元素的数组。 实际输出:当我删除值时,我得到的数组有1个元素,元素值为null。
我正在尝试从对象数组中删除属性。 我希望var2包含这样的内容。 是否有方法将/cast转换为上述内容?换句话说,我想从对象数组中删除,并将其分配给。我该怎么做?
到目前为止,在阅读一些Java教程时,我一直在使用以下语法分配数组: 但自从我开始使用类以来,事情一直让我困惑: 我在main函数中使用这个类,如下所示: 这一行应该给我一个由构造函数默认初始化的三个对象组成的数组。 当我执行以下操作时,运行时会出现异常。 在C语言中,这非常简单,不需要额外的新代码: 所以,在进一步搜索后,我发现我仍然需要为数组中的每个元素分配内存才能真正开始使用它们。如果是这样
有人知道一种方法(如果可能的话也可以使用lodash)通过对象键对对象数组进行分组,然后根据分组创建新的对象数组吗?例如,我有一个汽车对象数组: 我想制作一个由分组的新汽车对象数组: