我有一个包含行信息的对象数组。我试图过滤此信息,以便我得到一个包含每个行值只有一次的新数组。因此,以下对象将输出类似['1', '2', '3']
这是我的代码。我正在尝试地图功能但不确定这是否是正确的方法:
var myArray = [
{
"row": 1,
"headline": "First Object"
},
{
"row": 1,
"headline": "Second Object"
},
{
"row": 2,
"headline": "Third Object"
},
{
"row": 2,
"headline": "Fourth Object"
},
{
"row": 3,
"headline": "Fifth Object"
}
];
var rows = myArray.map(function(row) {
console.log(row)
});

答案 0 :(得分:1)
最简单的方法可能是将所有属性写入对象,然后将它们写回数组:
var o = {},
uniqueArray = [];
myArray.forEach(function (d) {
o[d.row] = true; // stores the key equal to d.row in the object
});
for (var k in o) { // loop through all the keys in o
if (o.hasOwnProperty(k)) // if the object o has that key
uniqueArray.push(k); // push it to the array
}
console.log(uniqueArray);
// ["1", "2", "3"];
答案 1 :(得分:1)
将所有行值放在数组中......
var arrayAll = [];
for (var i = 0; i < myArray.length; i++) {
arrayAll.push(myArray[i].row)
}
然后删除重复项
var uniqueNames = [];
$.each(arrayAll, function (i, el) {
if ($.inArray(el, uniqueNames) === -1) uniqueNames.push(el);
});
console.log(uniqueNames);
如果您需要非JQuery选项,请参阅此帖子以了解删除重复项的其他选项。 Remove Duplicates from JavaScript Array
答案 2 :(得分:1)
对于更易读的方法,我会选择的答案是:
var distinct = function(rows){
var mappedValues = rows.map(function(single){
return single.row;
});
return mappedValues.filter(function(item,pos){
return mappedValues.indexOf(item) === pos;
});
}
distinct(myArray);
只需2美分。