我有一个对象数组。像
project=[
{
name : "A"
dept : ["a", "b", "c"]
},
{
name : "B"
dept : ["a", "e", "f", "g"]
},
{
name : "C"
dept : ["b", "c", "e", "j"]
},
]
现在我想使用下划线从这个对象数组中收集dept的所有唯一数组值。 输出应保存在新数组中。像
var newArray = ["a", "b", "c", "e", "f", "g", "j"]
我是underscore.js的新手。提前谢谢。
答案 0 :(得分:1)
这应该这样做:
_.uniq(_.flatten(project.map(x => x.dept)));
答案 1 :(得分:1)
您可以使用Set
和reduce()
在纯js中执行此操作。
var project = [{
name: "A",
dept: ["a", "b", "c"]
}, {
name: "B",
dept: ["a", "e", "f", "g"]
}, {
name: "C",
dept: ["b", "c", "e", "j"]
}];
var result = [...new Set(project.reduce((r, e) => r.concat(e.dept), []))]
console.log(result)

答案 2 :(得分:1)
var project = [{
name: "A",
dept: ["a", "b", "c"]
}, {
name: "B",
dept: ["a", "e", "f", "g"]
}, {
name: "C",
dept: ["b", "c", "e", "j"]
}, ]
_UNIQUEAGEARRAY = _.flatten(project.map(function(item) {
return item.dept
}));
console.log(_.uniq(_UNIQUEAGEARRAY));
document.body.innerHTML = JSON.stringify(_UNIQUEAGEARRAY);
小提琴:
答案 3 :(得分:1)
以下是使用下划线here,pluck和flatten的解决方案:
var result = _.chain(project)
.pluck('dept')
.flatten()
.uniq()
.value();
var project=[
{
name : "A",
dept : ["a", "b", "c"]
},
{
name : "B",
dept : ["a", "e", "f", "g"]
},
{
name : "C",
dept : ["b", "c", "e", "j"]
},
]
var result = _.chain(project)
.pluck('dept')
.flatten()
.uniq()
.value();
document.getElementById('result').textContent = JSON.stringify(result);

<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<p>
<pre id="result"></pre>
</p>
&#13;
答案 4 :(得分:0)
ES2015版本:
const newArray = project.reduce((res, {dept}) =>
(dept.forEach(v => !res.some(r => r === v) && res.push(v)), res), []);
也
const newArray = [...new Set(Array.prototype.concat.apply([], project.map(({dept}) => dept)))]
答案 5 :(得分:0)
试试这个。
var projects = [{
name: "A",
dept: ["a", "b", "c"]
}, {
name: "B",
dept: ["a", "e", "f", "g"]
}, {
name: "C",
dept: ["b", "c", "e", "j"]
}]
var depts = [];
projects.map((project) => {
depts = depts.concat(project.dept)
});
var result = depts.filter((item, pos) => depts.indexOf(item) == pos);
console.log(result);
答案 6 :(得分:0)
您可以使用spread syntax ...
和Set
var project = [{ name: "A", dept: ["a", "b", "c"] }, { name: "B", dept: ["a", "e", "f", "g"] }, { name: "C", dept: ["b", "c", "e", "j"] }];
var result = project.reduce((r, a) => [...new Set([...r, ...a.dept])], []);
console.log(result);