2016-05-12 53 views
-1

console.log()的输出如下。我想删除重复的“特征”,但获得我们的“价值”。Angularjs:删除重复的属性,但得到我们的值

这是我的化妆结果的foreach从下面的代码:

angular.forEach(checkCharacteristicValue, function(item) { 
    console.log(item) 
    $scope.allCharAndValue.push({ 
    characteristic: item.businessassetcharacteristic.characteristicName, 
    value: item.characteristicValue 
    }); 
}); 

输出:

Object 1: 
characteristic: "Вид Маса" 
value: "2-ни" 
__proto__: Object 
Object 2: 
characteristic: "Вид Маса" 
value: "4-ни" 
__proto__: Object 
Object 3: 
characteristic: "Вид Маса" 
value: "6-ни" 
__proto__: Object 

我希望看到这样的结果:{ name:Вид Маса, value:["2-ни", "4-ни", "6-ци"] }

+1

我想你的意思是结果是这样的:'[{名称:ВидМаса,值:“2ни”,” 4-ни”, “6-ци”]}]'。你已经显示了','分隔的字符串赋值为不正确 –

+0

@AdityaSingh方括号只在内部,而不在外部。 – cst1992

+0

你的意思是“在里面,而不是在外面”。 –

回答

2

这是我怎么会做它。

我使用一个对象来存储相同的特征项,并创建一个数组与该键的所有值。试试吧,告诉我,如果它是确定你;)

var raw = [{ 
    characteristic: "Вид Маса", 
    value: "2-ни" 
}, 
{ 
characteristic: "Вид Маса", 
value: "4-ни" 
}, 
{ 
characteristic: "Вид Маса", 
value: "6-ни" 
}]; 

// dedup 
var dedup = {}; 
raw.forEach(function(e,i) { 
    if (! dedup.hasOwnProperty(e.characteristic)) { 
     dedup[e.characteristic] = { name : e.characteristic }; 
     dedup[e.characteristic].value = []; 
    } 
    dedup[e.characteristic].value.push(e.value); 
}); 

// flatten to fit requirements 
var flatten = []; 
for(var key in dedup) { 
    flatten.push(dedup[key]); 
} 

console.log(flatten); 
+0

非常感谢,太棒了! –

+0

欢迎您;) –

+0

嘿我有小问题:идМаса:Array [3] 0:“2-İ” 1:“4-İ” 2:“6-ци”我想看到名字:Вид Маса,value:Array [3] 0:“2-”“ 1:”4-“” 2:“6-ци” –