如何使用ES6方法将此对象数组转换为字符串?

时间:2018-11-11 18:33:06

标签: javascript arrays ecmascript-6

我有以下对象数组:

<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<div class="row" id="meta-search">

  <div class="col-sm-6">
    <h5> IDs </h5>
    <form action="" method="post">
      <div class="row">
        <div class="col mb-3">
          <label>ID1</label>
          <input type="number" class="form-control">
        </div>

        <div class="col mb-3">
          <label>ID2</label>
          <input type="number" class="form-control">
        </div>

        <div class="col mb-3">
          <label>ID3</label>
          <input type="number" class="form-control">
        </div>
      </div>
      <button class="btn btn-primary btn-sm" name="submit1" type="submit">Search Record</button>

    </form>
  </div>

</div>

我想获得以下字符串输出:

const pagesByBook = [
{bookName: "An old tome", pages: 123},
{bookName: "Really ancient stuff", pages: 432},
{bookName: "Yup, another old book", pages: 218}
]

如何使用ES6方法(例如map)在几行中使用此方法?

2 个答案:

答案 0 :(得分:1)

在我看来,这是使用ES6解构的简单map。假设数组中的最后2个元素是常量(oldnull):

const data = [ {bookName: "An old tome", pages: 123}, {bookName: "Really ancient stuff", pages: 432}, {bookName: "Yup, another old book", pages: 218} ] 

const result = data.map(({bookName, pages}) => [bookName, pages, 'old', null])

console.log(JSON.stringify(result))

如果需要此字符串表示形式,则可以将其更改为:

const data = [ {bookName: "An old tome", pages: 123}, {bookName: "Really ancient stuff", pages: 432}, {bookName: "Yup, another old book", pages: 218} ] 

const result = data.map(({bookName, pages}) => JSON.stringify([bookName, pages, 'old', null]))

console.log(result.join(','))

答案 1 :(得分:0)

使用JSON.stringifyArray#mapObject.valuesArray#sliceArray#concat来获得所需的结果。

const pagesByBook = [{
    bookName: "An old tome",
    pages: 123
  },
  {
    bookName: "Really ancient stuff",
    pages: 432
  },
  {
    bookName: "Yup, another old book",
    pages: 218
  }
]

const res = JSON.stringify(pagesByBook.map(item => Object.values(item).concat("old", null))).slice(1, -1);

console.log(res)