изменить значение массива вложенных объектов в строку - PullRequest
0 голосов
/ 08 марта 2019

это массив, который у меня сейчас есть

const myArr = [
    {
      "code": {
        "value": "AC16",
        "description": "text"
      },
      "convictionDate": {
        "value": "2019-03-07"
      }
    },
    {
      "code": {
        "value": "AC20",
        "description": "text"
      },
      "convictionDate": {
        "value": "2019-03-06"
      }
    }
  ];

Я хочу отобразить каждый вложенный объект внутри массива, чтобы значение каждого вложенного объекта было свойством значения этого объекта в виде строки.таким образом, объект станет:

const myArr = [
    {
      "code": "AC16",
      "convictionDate":"2019-03-07"
    },
    {
      "code":"AC20",
      "convictionDate": "2019-03-06"
    }
  ]

Я попытался это безуспешно:

const x = myArr.map((item)=>{
        console.log(item)
        Object.keys(item).map(function(key,i) {
            item[key] = item[key][value];
        })
    })

Ответы [ 4 ]

1 голос
/ 08 марта 2019

const myArr = [
    {
      "code": {
        "value": "AC16",
        "description": "text"
      },
      "convictionDate": {
        "value": "2019-03-07"
      }
    },
    {
      "code": {
        "value": "AC20",
        "description": "text"
      },
      "convictionDate": {
        "value": "2019-03-06"
      }
    }
  ];
  
let newArray = myArr.map(e => {
  return { "code":e.code.value, "convictionDate": e.convictionDate.value}
})

console.log(newArray);
1 голос
/ 08 марта 2019

Вы почти у цели.Просто используйте массив карт

const myArr = [{
    "code": {
      "value": "AC16",
      "description": "text"
    },
    "convictionDate": {
      "value": "2019-03-07"
    }
  },
  {
    "code": {
      "value": "AC20",
      "description": "text"
    },
    "convictionDate": {
      "value": "2019-03-06"
    }
  }
];

let newArray = myArr.map(function(item) {
  return {
    code: item.code.value,
    convictionDate: item.convictionDate.value

  }

});
console.log(newArray)
1 голос
/ 08 марта 2019

Сопоставьте массив и уменьшите записи до требуемой формы объекта:

const myArr = [{"code":{"value":"AC16","description":"text"},"convictionDate":{"value":"2019-03-07"}},{"code":{"value":"AC20","description":"text"},"convictionDate":{"value":"2019-03-06"}}];
  
const result = myArr.map(o =>
  Object.entries(o).reduce((r, [k, { value }]) => ({ ...r, [k]: value }), {})
);

console.log(result);
0 голосов
/ 08 марта 2019

Само собой разумеется, что в W3 Schools есть несколько замечательных справочных материалов, подробные сведения об этом можно найти в их статье здесь

Тем не менее ...

Почему бы не упростить код и не попробовать это с вашим массивом: -

const myArr = [
    {
      "code": {
        "value": "AC16",
        "description": "text"
      },
      "convictionDate": {
        "value": "2019-03-07"
      }
    },
    {
      "code": {
        "value": "AC20",
        "description": "text"
      },
      "convictionDate": {
        "value": "2019-03-06"
      }
    }
  ];

// PROPOSED SOLUTION CODE
const x = myArr.map((item)=>{
        return {code: item.code.value,convictionDate: item.convictionDate.value}
    });

// Your Desired Example Provided in Question
const xArr = [
    {
      "code": "AC16",
      "convictionDate":"2019-03-07"
    },
    {
      "code":"AC20",
      "convictionDate": "2019-03-06"
    }
  ];

// Output Validation
console.log('Response of Array \'x\'');
console.log(x);
console.log('Your Desired Example');
console.log(xArr);

При использовании «карты»; мы должны отобразить исходный массив ('myArr') на наш новый целевой массив ('x').

В контексте предоставленного вами примера кода «data.convictions» не определено.

Волшебство - все здесь: -

const x = myArr.map((item)=>{
        return {code: item.code.value,convictionDate: item.convictionDate.value}
    });

Удачного кодирования!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...