#javascript #arrays #multidimensional-array
#javascript #массивы #многомерный массив
Вопрос:
Я пытаюсь обновить вложенные элементы массива в javascript. хотите преобразовать даты в другой формат. как я могу обновлять вложенные элементы
array1 = [
{
"week": [
"2019-05-06T16:00:00.000Z",
"2019-05-07T16:00:00.000Z",
"2019-05-08T16:00:00.000Z",
"2019-05-09T16:00:00.000Z",
"2019-05-10T16:00:00.000Z",
"2019-05-11T16:00:00.000Z",
"2019-05-12T16:00:00.000Z"
],
"weekNumber": 19
},
{
"week": [
"2019-05-20T16:00:00.000Z",
"2019-05-21T16:00:00.000Z",
"2019-05-22T16:00:00.000Z",
"2019-05-23T16:00:00.000Z",
"2019-05-24T16:00:00.000Z",
"2019-05-25T16:00:00.000Z",
"2019-05-26T16:00:00.000Z"
],
"weekNumber": 21
},
{
"week": [
"2019-06-03T16:00:00.000Z",
"2019-06-04T16:00:00.000Z",
"2019-06-05T16:00:00.000Z",
"2019-06-06T16:00:00.000Z",
"2019-06-07T16:00:00.000Z",
"2019-06-08T16:00:00.000Z",
"2019-06-09T16:00:00.000Z"
],
"weekNumber": 23
}
];
expectedResult = [
{
"week": [
"2019-05-06",
"2019-05-07",
"2019-05-08",
"2019-05-09",
"2019-05-10",
"2019-05-11",
"2019-05-12"
],
"weekNumber": 19
},
{
"week": [
"2019-05-20",
"2019-05-21",
"2019-05-22",
"2019-05-23",
"2019-05-24",
"2019-05-25",
"2019-05-26"
],
"weekNumber": 21
},
{
"week": [
"2019-06-03",
"2019-06-04",
"2019-06-05",
"2019-06-06",
"2019-06-07",
"2019-06-08",
"2019-06-09"
],
"weekNumber": 23
}
];
хотите удалить «:00:00.000Z» . У меня есть функция форматирования, которая удалила это, но не знаю, как вызвать здесь
хотите удалить «:00:00.000Z» . У меня есть функция форматирования, которая удалила это, но не знаю, как вызвать здесь
Ответ №1:
Вы можете использовать map
и split
let array1 = [{"week": ["2019-05-06T16:00:00.000Z","2019-05-07T16:00:00.000Z","2019-05-08T16:00:00.000Z","2019-05-09T16:00:00.000Z","2019-05-10T16:00:00.000Z","2019-05-11T16:00:00.000Z","2019-05-12T16:00:00.000Z"],"weekNumber": 19},
{"week": ["2019-05-20T16:00:00.000Z","2019-05-21T16:00:00.000Z","2019-05-22T16:00:00.000Z","2019-05-23T16:00:00.000Z","2019-05-24T16:00:00.000Z","2019-05-25T16:00:00.000Z","2019-05-26T16:00:00.000Z"],"weekNumber": 21},
{"week": ["2019-06-03T16:00:00.000Z","2019-06-04T16:00:00.000Z","2019-06-05T16:00:00.000Z","2019-06-06T16:00:00.000Z","2019-06-07T16:00:00.000Z","2019-06-08T16:00:00.000Z","2019-06-09T16:00:00.000Z"],"weekNumber": 23}];
let op = array1.map(e=>{
e.week = e.week.map(val => val.split('T',1)[0])
return e
})
console.log(op)
Ответ №2:
Вы можете использовать map
, если хотите, чтобы новый массив можно было использовать map
внутри forEach
. В основном вам нужно использовать вложенную карту.
В этом примере показано использование двух map
, один вложенный в другой. Во вложенной карте week
выполняется итерация, и здесь Date
объект используется. Если у вас есть отдельная функция, вы можете вызвать ее внутри функции обратного вызова вложенной карты следующим образом
let newfmt = array1.map(function(item) {
return {
week: item.week.map(function(elem) {
// here elem will be each value inside the week array.
// since map create an array here week will be an array of formatted dates
return yourFunction(elem)
}),
weekNumber: item.weekNumber
}
})
let array1 = [{
"week": [
"2019-05-06T16:00:00.000Z",
"2019-05-07T16:00:00.000Z",
"2019-05-08T16:00:00.000Z",
"2019-05-09T16:00:00.000Z",
"2019-05-10T16:00:00.000Z",
"2019-05-11T16:00:00.000Z",
"2019-05-12T16:00:00.000Z"
],
"weekNumber": 19
},
{
"week": [
"2019-05-20T16:00:00.000Z",
"2019-05-21T16:00:00.000Z",
"2019-05-22T16:00:00.000Z",
"2019-05-23T16:00:00.000Z",
"2019-05-24T16:00:00.000Z",
"2019-05-25T16:00:00.000Z",
"2019-05-26T16:00:00.000Z"
],
"weekNumber": 21
},
{
"week": [
"2019-06-03T16:00:00.000Z",
"2019-06-04T16:00:00.000Z",
"2019-06-05T16:00:00.000Z",
"2019-06-06T16:00:00.000Z",
"2019-06-07T16:00:00.000Z",
"2019-06-08T16:00:00.000Z",
"2019-06-09T16:00:00.000Z"
],
"weekNumber": 23
}
];
let newfmt = array1.map(function(item) {
return {
week: item.week.map(function(elem) {
let dt = new Date(elem);
return `${dt.getFullYear()}-${dt.getMonth()}-${dt.getDay()}`
}),
weekNumber: item.weekNumber
}
})
console.log(newfmt)
Ответ №3:
Вы можете использовать Object.assign, например:-
const a = { x: "Hi", y: "Test" }
const b = Object.assign({}, a, { x: "Bye" });
console.log(b);
Здесь, скорее, x: "Bye"
вы можете выполнить итерацию по неделе и выполнить форматирование.
Комментарии:
1. Да, использование map — гораздо лучший способ.