Я могу изменить значение Среды. NewLine?

Хотя существуют и другие подходы, всякий раз, когда мне нужно разобрать уникальные значения из массива таким образом, я создам объект со свойствами объекта, представляющими группировки значений массива

{ 1: [1, 1, 1], 2: [2 , 2, 2], 4: [4], 5: [5] ...}

Затем вы можете используйте нативный метод объекта, чтобы получить все ключи или значения от объекта, если вам нужно (или если ваша конечная цель отличается, вы можете использовать объект так, как это необходимо)

Object.keys(obj)
// or
Object.values(obj)

Для вашего случая, это будет выглядеть как

const arr = [1, 2, 4, 591, 392, 391, 2, 5, 10, 2, 1, 1, 1, 20, 20];

const obj = arr.reduce((accum, val) => {
    accum[val] = accum[val] || [];
    accum[val].push(val);
    return accum;
}, {});

const finalArr = Object.values(obj).map(val => val.length > 1 ? val : val[0]);
console.log(finalArr);
6
задан TheSoftwareJedi 20 February 2009 в 15:27
поделиться

7 ответов

Я могу изменить значение Среды. NewLine?

Нет. Если Вы знаете, который платформа записать для, создайте классы для каждой из этих платформ и позвольте им иметь свою собственную реализацию. В самом простом случае это посмотрело бы следующим образом:

public abstract class Platform { public abstract string Newline { get; } }

public sealed class Unix : Platform {
    public override string Newline { get { return "\n"; } }
}

и т.д., и затем просто используйте экземпляр соответствующего класса.

10
ответ дан 9 December 2019 в 22:40
поделиться

Согласно MSDN класс Среды изолируется поэтому, Вы не смогли бы наследоваться ему для изменения значения. К моему знанию, которое является единственным способом, которым Вы смогли бы. Кроме того, Вы могли попытаться создать частичный класс, расширяющий класс Среды. Я никогда не судил последнего, таким образом, не уверенного, если это будет работать.

2
ответ дан 9 December 2019 в 22:40
поделиться

Среда. Новая строка возвращает символ новой строки среды выполнения, размещающей время выполнения .NET. Вы не должны использовать это для преобразования новой строки к символу новой строки другой платформы.

Я рекомендовал бы реализовать Ваш собственный класс для преобразований.

1
ответ дан 9 December 2019 в 22:40
поделиться

Среда. Постоянное свойство NewLine, таким образом, нет никакого изменения его. Лучшая вещь, которую я мог рекомендовать, состоит в том, чтобы измениться везде, где это используется к Вашей собственной константе.

0
ответ дан 9 December 2019 в 22:40
поделиться

Сторонняя библиотека пишет в Поток, или Вы передаете ее имя файла?

В бывшем случае Вы могли передать MemoryStream и затем сделать замену на новых строках для получения тех, Вы хотите. В последнем заставляют это писать во временный файл, затем поток в реальный файл (при замене окончаний строки).

0
ответ дан 9 December 2019 в 22:40
поделиться

Да благословит вас Господь не может... Вы полностью изменять целое значение System.Environment пространство имен.

То, что Вы хотите сделать, пишет что-то для определенной ОС (неважно, какая среда Вы запускаете приложение на), таким образом, Среда. не то, что необходимо использовать для запуска.

0
ответ дан 9 December 2019 в 22:40
поделиться

У нас была эта проблема там, где у нас была чтобы изменить значение NewLine на
для веб-вывода.

Это потребовало создания другого свойства для использования в нашем классе. На самом деле выхода нет.

-2
ответ дан 9 December 2019 в 22:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: