Могу ли я превратить массив .map в массив через запятую с двойными кавычками? - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь взять некоторые данные из набора переменных веток и разобрать их в плагин javascript. Это набор дат, перечисленных в массиве. Сначала они отображаются в шаблоне так, как строка:

{"date":"2018-08-30, 2018-08-13, 2018-08-10, 2018-08-01, 2018-08-26, 2018-09-27, 2018-09-26, 2018-09-25, 2018-09-24, 2018-09-23, 2018-09-29, 2018-09-28"}

Затем я беру эти данные и использую их для создания массива с функцией ниже:

const datesNotAvailableArray = $('#datesGone').data('dates');
var arr = Object.keys(datesNotAvailableArray).map(function(k) { 
    return datesNotAvailableArray[k] 
});

Когда я console.log(arr[0]), я получаю следующий вывод:

2018-08-30, 2018-08-13, 2018-08-10, 2018-08-01, 2018-08-26, 2018-09-27, 2018-09-26, 2018-09-25, 2018-09-24, 2018-09-23, 2018-09-29, 2018-09-28

Это хорошо, но я действительно хочу получить вот что:

["2018-08-30", "2018-08-13", "2018-08-10", etc etc]

Могу ли я сделать это внутри самой функции .map?

Ответы [ 6 ]

0 голосов
/ 30 августа 2018

Я думаю, вы ищете что-то вроде этого:

var arr = Object.keys(datesNotAvailableArray).map(k => obj[k].split(','))[0]
console.log(arr[0); // ["2018-08-30", " 2018-08-13", " 2018-08-10", " 2018-08-01", " 2018-08-26", " 2018-09-27", " 2018-09-26", " 2018-09-25", " 2018-09-24", " 2018-09-23", " 2018-09-29", " 2018-09-28"]

Это даст желаемый результат, но он действительно полезен, только если у вас есть другие ключи от вашего исходного объекта. Однако я бы посоветовал не делать этого, так как это приведет к потере информации о том, какой индекс выходного массива был сопоставлен с каким ключом исходного объекта.

Любой из предыдущих ответов был бы лучшим подходом, чем то, что вы пытались сделать с .map

0 голосов
/ 30 августа 2018

Объект имеет только один ключ, т. Е. date, значением которого является строка, содержащая все даты. Вам нужно разделить строку на ,, чтобы получить то, что вы хотите, а также trim() строки, чтобы удалить дополнительное пространство, оставшееся после разбиения.

const dateObj = {"date":"2018-08-30, 2018-08-13, 2018-08-10, 2018-08-01, 2018-08-26, 2018-09-27, 2018-09-26, 2018-09-25, 2018-09-24, 2018-09-23, 2018-09-29, 2018-09-28"}

var dates = dateObj.date.split(",").map(s => s.trim());

console.log(dates);
0 голосов
/ 30 августа 2018

var obj = {"date":"2018-08-30, 2018-08-13, 2018-08-10, 2018-08-01, 2018-08-26, 2018-09-27, 2018-09-26, 2018-09-25, 2018-09-24, 2018-09-23, 2018-09-29, 2018-09-28"}
const result = obj .date.split(',').map(s => s.trim());


console.log(result)
0 голосов
/ 30 августа 2018
const datesNotAvailableArray = $('#datesGone').data('dates');
datesNotAvailableArray['date'].split(', ')
0 голосов
/ 30 августа 2018

Просто сделайте это с String.prototype.split () , он вернет массив строк, разделив строку на подстроки ,

См. Дополнительный пробел после , для split() метода, это поможет вам избежать использования дополнительных методов, таких как map() и trim() например, date.split(',').map(i=>i.trim())

var dates = {
  "date": "2018-08-30, 2018-08-13, 2018-08-10, 2018-08-01, 2018-08-26, 2018-09-27, 2018-09-26, 2018-09-25, 2018-09-24, 2018-09-23, 2018-09-29, 2018-09-28"
};
console.log(dates.date.split(", "));
0 голосов
/ 30 августа 2018

Вы можете использовать split () , чтобы превратить строку в массив, затем, если вы хотите массивоподобную строку с двойными кавычками, вы можете использовать .map и возвращать '"' + e + '"' в каждой итерации, и затем join(",") снова, чтобы вернуть строку.

const obj = {"date":"2018-08-30, 2018-08-13, 2018-08-10, 2018-08-01, 2018-08-26, 2018-09-27, 2018-09-26, 2018-09-25, 2018-09-24, 2018-09-23, 2018-09-29, 2018-09-28"}

var newArr = obj.date.split(",");//<-- (", ") could remove the spaces in this case

console.log(newArr)//<-- array

newArr = newArr.map(e=>'"' + e + '"')

str = "["+newArr.join(",")+"]"

console.log(str)//<-- string with " as your example
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...