按值名称过滤掉重复的对象,并将其放入新数组中
filter out duplicate objects by value name and place into new array
我正试图按对象值名称过滤掉数组中重复的对象,并将其放入名为finalResult的新数组中。
基本上,我只想在我的新数组中有具有唯一国家名称的对象。
示例阵列:
var result = [
{country: 'united states', numofdistributors: 5},
{country: 'united states', numofdistributors: 5},
{country: 'brazil', numofdistributors: 2},
{country: 'Germany', numofdistributors: 1},
{country: 'india', numofdistributors: 6},
{country: 'united states', numofdistributors: 5},
{country: 'Egypt', numofdistributors: 1},
{country: 'Germany', numofdistributors: 1},
];
这就是我希望我的数组变成的样子:
var finalResult = [
{country: 'united states', numofdistributors: 5},
{country: 'brazil', numofdistributors: 2},
{country: 'Germany', numofdistributors: 1},
{country: 'india', numofdistributors: 6},
{country: 'Egypt', numofdistributors: 1},
];
以下是我试图解决的问题,没有运气,只有挫折:
var finalResults = [];
result.forEach(function(country){
if(finalResults.indexOf(country.country) != -1){
console.log('already added');
}else {
//console.log('Does not exist');
finalResults.push(country);
});
console.log(finalResults);
您可以使用Array#filter
过滤数据,并对已插入的项使用对象。
var result = [{ country: 'united states', numofdistributors: 5 }, { country: 'united states', numofdistributors: 5 }, { country: 'brazil', numofdistributors: 2 }, { country: 'Germany', numofdistributors: 1 }, { country: 'india', numofdistributors: 6 }, { country: 'united states', numofdistributors: 5 }, { country: 'Egypt', numofdistributors: 1 }, { country: 'Germany', numofdistributors: 1 }, ],
finalResult = result.filter(function (a) {
var key = a.country + '|' + a.numofdistributors;
if (!this[key]) {
this[key] = true;
return true;
}
}, Object.create(null));
document.write('<pre>' + JSON.stringify(finalResult, 0, 4) + '</pre>');
你已经完成了。只是一个简单的错误:
var result = [
{country: 'united states', numofdistributors: 5},
{country: 'united states', numofdistributors: 5},
{country: 'brazil', numofdistributors: 2},
{country: 'Germany', numofdistributors: 1},
{country: 'india', numofdistributors: 6},
{country: 'united states', numofdistributors: 5},
{country: 'Egypt', numofdistributors: 1},
{country: 'Germany', numofdistributors: 1},
];
var finalResult = [
{country: 'united states', numofdistributors: 5},
{country: 'brazil', numofdistributors: 2},
{country: 'Germany', numofdistributors: 1},
{country: 'india', numofdistributors: 6},
{country: 'Egypt', numofdistributors: 1},
];
var finalResults = [];
var countries = [];
result.forEach(function(country){
if(countries.indexOf(country.country) != -1){
console.log('already added');
}else {
//console.log('Does not exist');
finalResults.push(country);
countries.push(country.country);
}
}
);
console.log(finalResults);
相关文章:
- javascript处理一个对象数组以获得一个新的对象数组
- 创建新的javascript数组,从对象属性中提取数据
- 在现有的json对象中添加一个新的键(数组)
- 比较两个JSON数组并重新排列新的JSON数组格式
- 使用 JavaScript 比较 2 个数组并创建一个新的对象数组,该数组不包含与 id 字段匹配的对象
- 将字段添加到新的 JavaScript 数组副本
- 在运行之前确定数据是否是新的(将数组与 JSON 进行比较)
- 如何将两个 JS 数组连接到一个新的对象数组作为键:值
- 如何将现有 JSON 对象数组的某些对象复制到新的 JSON 数组
- Javascript:用一个新值替换数组中的所有内容
- 将对象的值推送到新的对象数组中
- 通过比较和推送唯一对象来创建新的对象数组
- 计算JavaScript数组元素的出现次数,并放入一个新的2d数组
- 在angular(循环中的循环)中创建新的对象数组时遇到麻烦
- 如何循环遍历新生成的数组而不覆盖它?
- 我如何组合数组中的数据值来创建一个新的数组
- 如何在Mongoose中添加一个新对象到数组
- 什么时候改变子数组更新子数组vs.创建一个新的子数组?[JavaScript]
- 通过组合另一个数组的两列来形成一个新的javascript数组
- 为什么我不能将new Array(3)映射到一个包含新值的数组?