Ваши два синтаксиса, о которых вы спрашиваете, это жирная стрелка для функций стрелок и оператор распространения .Первый можно заменить стандартным выражением функции, а второй - итерацией, используя forEach
, который добавляет элементы в массив.Кроме того, вам также нужна замена для конструктора Set
, который инициализирует его из итерируемого.Вместо этого вам нужно добавлять элементы один за другим.
Вы можете написать свою функцию следующим образом.Сначала все значения добавляются в набор, а затем получает значения из списка и возвращается в новый массив:
function getUniqueValues(array, prop) {
// create set
var set = new Set();
array.forEach(function (item) {
set.add(item[prop]);
});
// convert set to array
var result = [];
set.forEach(function (item) {
result.push(item);
});
return result;
}
Поскольку существует базовая поддержка Set
, включаяforEach
, в Internet Explorer 11 вы можете использовать это без полизаполнения.
Вот пример, который отлично работает в Internet Explorer 11:
var options = [
{ yypeOption: "option1" },
{ yypeOption: "option2" },
{ yypeOption: "option1" },
{ yypeOption: "option1" },
{ yypeOption: "option3" },
];
function getUniqueValues(array, prop) {
var set = new Set();
array.forEach(function (item) {
set.add(item[prop]);
});
var result = [];
set.forEach(function (item) {
result.push(item);
});
return result;
}
console.log(getUniqueValues(options, 'yypeOption'));