如何基于对象的嵌套子孩子的数量排序的对象数组?

问题描述 投票:-2回答:2

什么是为了以下阵列上的子儿童的的数目(即ISBNs的数目在这种情况下)进行排序的最佳方式。

const data = [{
      "Arnold Bennett": {
         "9781784872359": {
            "thumbnail_image_url": "https://books-sn.s3.amazonaws.com/571b8c01-ed88-4cc1-8e0c-efe3de967147.jpg",
            "title": "Clayhanger "
         }
      }
   },
   {
      "Agatha Christie": {
         "9780007527588": {
            "thumbnail_image_url": "http://books.google.com/books/content?id=BxlamwEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api",
            "title": "Mrs. McGinty's Dead"
         },
         "9780008129590": {
            "thumbnail_image_url": "https://books-sn.s3.amazonaws.com/c125ee1d-c5ea-4827-a488-e9ee9c8afc8d.jpg",
            "title": "The Clocks"
         },
         "9780007120857": {
            "thumbnail_image_url": "http://books.google.com/books/content?id=RAlvswEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api",
            "title": "The Murder at the Vicarage"
         },
         "9780007556878": {
            "thumbnail_image_url": "http://books.google.com/books/content?id=Zb_inQEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api",
            "title": "Dead Man's Folly"
         },
         "9780007120826": {
            "thumbnail_image_url": "http://books.google.com/books/content?id=Dve45zlLKbUC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api",
            "title": "4.50 from Paddington"
         },
         "9780007121052": {
            "thumbnail_image_url": "http://books.google.com/books/content?id=QR9J95ZE2zcC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api",
            "title": "Nemesis"
         },
         "9780007527519": {
            "thumbnail_image_url": "http://books.google.com/books/content?id=dOrsAQAACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api",
            "title": "Five Little Pigs"
         },
         "9780007120963": {
            "thumbnail_image_url": "https://books-sn.s3.amazonaws.com/ba1fcb40-5383-40d9-bdfc-0e9d285b2321.jpeg",
            "title": "A Murder is Announced "
         },
         "9780008196233": {
            "thumbnail_image_url": "https://books-sn.s3.amazonaws.com/3a08b20a-377e-4b96-890c-1ecc3e09e595.jpg",
            "title": "The Sittaford Mystery"
         },
         "9780008196615": {
            "thumbnail_image_url": "http://books.google.com/books/content?id=6E8FvgAACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api",
            "title": "At Bertram's Hotel"
         },
         "9780008129484": {
            "thumbnail_image_url": "https://books-sn.s3.amazonaws.com/fe46e96d-7f24-40f1-92e1-b60f10af9dd1.jpg",
            "title": "The Mystery of the Blue Train"
         },
         "9780007314669": {
            "thumbnail_image_url": "https://books-sn.s3.amazonaws.com/cd40bc91-4c28-4f97-872a-ba24f10b0564.jpg",
            "title": "An Autobiography"
         },
         "9780006513773": {
            "thumbnail_image_url": "http://books.google.com/books/content?id=JMqChKyf-0EC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api",
            "title": "Hercule Poirot"
         },
         "9780007527502": {
            "thumbnail_image_url": "http://books.google.com/books/content?id=9CO1mgEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api",
            "title": "Murder on the Orient Express"
         },
         "9780007527496": {
            "thumbnail_image_url": "http://books.google.com/books/content?id=ERPosgEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api",
            "title": "The Mysterious Affair at Styles"
         },
         "9780007120833": {
            "thumbnail_image_url": "http://books.google.com/books/content?id=lA1KuAEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api",
            "title": "The Body in the Library"
         },
         "9780007120734": {
            "thumbnail_image_url": "http://books.google.com/books/content?id=CEEUPYluIeEC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api",
            "title": "Five Little Pigs"
         },
         "9780007120970": {
            "thumbnail_image_url": "https://books-sn.s3.amazonaws.com/fd1f1d09-c08f-4f35-8be1-a35862d9e4b6.jpg",
            "title": "A Pocket Full of Rye"
         },
         "9780007120864": {
            "thumbnail_image_url": "http://books.google.com/books/content?id=MK9JNwoZAncC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api",
            "title": "The Thirteen Problems"
         },
         "9780008125929": {
            "thumbnail_image_url": "http://books.google.com/books/content?id=kxK7rQEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api",
            "title": "The Secret Adversary (隱身魔鬼)"
         },
         "9780007121069": {
            "thumbnail_image_url": "http://books.google.com/books/content?id=ddlQBfuKWzwC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api",
            "title": "Sleeping Murder"
         },
         "9780008164898": {
            "thumbnail_image_url": "http://books.google.com/books/content?id=JCX2sgEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api",
            "title": "Cards on the Table"
         }
      }
   }, {
      "Alain De Botton": {
         "9780141035192": {
            "thumbnail_image_url": "http://books.google.com/books/content?id=l4FGPwAACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api",
            "title": "The Consolations of Philosophy"
         }
      }
   }, {
      "Alan Hollinghurst": {
         "9781447275183": {
            "thumbnail_image_url": "https://books-sn.s3.amazonaws.com/b46fc3f6-4950-4e4d-a734-93abd10b5351.jpeg",
            "title": "The Line of Beauty"
         }
      }
   }, {
      "Alan MacDonald": {
         "9781407108315": {
            "thumbnail_image_url": "http://books.google.com/books/content?id=1aEGOwAACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api",
            "title": "Winston Churchill and His Woeful Wars"
         }
      }
   }, {
      "Aldous Huxley": {
         "9780099518471": {
            "thumbnail_image_url": "http://books.google.com/books/content?id=3zl4oJMUskoC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api",
            "title": "Brave New World"
         }
      }
   }, {
      "Alessandro Manzoni": {
         "9780140442748": {
            "thumbnail_image_url": "http://books.google.com/books/content?id=azLiQUtMSncC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api",
            "title": "The Betrothed"
         },
         "9780241259078": {
            "thumbnail_image_url": "http://books.google.com/books/content?id=nyo8jwEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api",
            "title": "The Betrothed"
         }
      }
   }
]

我要进行排序,以便我得到Agatha Christie在上面,然后Alessandro Manzoni,然后剩下的人在他们的子元素的顺序。

谢谢

javascript
2个回答
3
投票

你可以使用sortObject.valuesObject.keys做这样的事情

const data=[{" Arnold Bennett":{"9781784872359":{"thumbnail_image_url":"https://books-sn.s3.amazonaws.com/571b8c01-ed88-4cc1-8e0c-efe3de967147.jpg","title":"Clayhanger "}}},{"Agatha Christie":{"9780007527588":{"thumbnail_image_url":"http://books.google.com/books/content?id=BxlamwEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api","title":"Mrs. McGinty's Dead"},"9780008129590":{"thumbnail_image_url":"https://books-sn.s3.amazonaws.com/c125ee1d-c5ea-4827-a488-e9ee9c8afc8d.jpg","title":"The Clocks"},"9780007120857":{"thumbnail_image_url":"http://books.google.com/books/content?id=RAlvswEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api","title":"The Murder at the Vicarage"},"9780007556878":{"thumbnail_image_url":"http://books.google.com/books/content?id=Zb_inQEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api","title":"Dead Man's Folly"},"9780007120826":{"thumbnail_image_url":"http://books.google.com/books/content?id=Dve45zlLKbUC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api","title":"4.50 from Paddington"},"9780007121052":{"thumbnail_image_url":"http://books.google.com/books/content?id=QR9J95ZE2zcC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api","title":"Nemesis"},"9780007527519":{"thumbnail_image_url":"http://books.google.com/books/content?id=dOrsAQAACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api","title":"Five Little Pigs"},"9780007120963":{"thumbnail_image_url":"https://books-sn.s3.amazonaws.com/ba1fcb40-5383-40d9-bdfc-0e9d285b2321.jpeg","title":"A Murder is Announced "},"9780008196233":{"thumbnail_image_url":"https://books-sn.s3.amazonaws.com/3a08b20a-377e-4b96-890c-1ecc3e09e595.jpg","title":"The Sittaford Mystery"},"9780008196615":{"thumbnail_image_url":"http://books.google.com/books/content?id=6E8FvgAACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api","title":"At Bertram's Hotel"},"9780008129484":{"thumbnail_image_url":"https://books-sn.s3.amazonaws.com/fe46e96d-7f24-40f1-92e1-b60f10af9dd1.jpg","title":"The Mystery of the Blue Train"},"9780007314669":{"thumbnail_image_url":"https://books-sn.s3.amazonaws.com/cd40bc91-4c28-4f97-872a-ba24f10b0564.jpg","title":"An Autobiography"},"9780006513773":{"thumbnail_image_url":"http://books.google.com/books/content?id=JMqChKyf-0EC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api","title":"Hercule Poirot"},"9780007527502":{"thumbnail_image_url":"http://books.google.com/books/content?id=9CO1mgEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api","title":"Murder on the Orient Express"},"9780007527496":{"thumbnail_image_url":"http://books.google.com/books/content?id=ERPosgEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api","title":"The Mysterious Affair at Styles"},"9780007120833":{"thumbnail_image_url":"http://books.google.com/books/content?id=lA1KuAEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api","title":"The Body in the Library"},"9780007120734":{"thumbnail_image_url":"http://books.google.com/books/content?id=CEEUPYluIeEC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api","title":"Five Little Pigs"},"9780007120970":{"thumbnail_image_url":"https://books-sn.s3.amazonaws.com/fd1f1d09-c08f-4f35-8be1-a35862d9e4b6.jpg","title":"A Pocket Full of Rye"},"9780007120864":{"thumbnail_image_url":"http://books.google.com/books/content?id=MK9JNwoZAncC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api","title":"The Thirteen Problems"},"9780008125929":{"thumbnail_image_url":"http://books.google.com/books/content?id=kxK7rQEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api","title":"The Secret Adversary (隱身魔鬼)"},"9780007121069":{"thumbnail_image_url":"http://books.google.com/books/content?id=ddlQBfuKWzwC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api","title":"Sleeping Murder"},"9780008164898":{"thumbnail_image_url":"http://books.google.com/books/content?id=JCX2sgEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api","title":"Cards on the Table"}}},{"Alain De Botton":{"9780141035192":{"thumbnail_image_url":"http://books.google.com/books/content?id=l4FGPwAACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api","title":"The Consolations of Philosophy"}}},{"Alan Hollinghurst":{"9781447275183":{"thumbnail_image_url":"https://books-sn.s3.amazonaws.com/b46fc3f6-4950-4e4d-a734-93abd10b5351.jpeg","title":"The Line of Beauty"}}},{"Alan MacDonald":{"9781407108315":{"thumbnail_image_url":"http://books.google.com/books/content?id=1aEGOwAACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api","title":"Winston Churchill and His Woeful Wars"}}},{"Aldous Huxley":{"9780099518471":{"thumbnail_image_url":"http://books.google.com/books/content?id=3zl4oJMUskoC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api","title":"Brave New World"}}},{"Alessandro Manzoni":{"9780140442748":{"thumbnail_image_url":"http://books.google.com/books/content?id=azLiQUtMSncC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api","title":"The Betrothed"},"9780241259078":{"thumbnail_image_url":"http://books.google.com/books/content?id=nyo8jwEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api","title":"The Betrothed"}}}]

data.sort((a,b) => {
  return Object.keys(Object.values(b)[0]).length - Object.keys(Object.values(a)[0]).length
})

console.log(data)

Object.values(b)[0]回报

{
  "9781407108315": {
    "thumbnail_image_url": "http://books.google.com/books/content?id=1aEGOwAACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api",
    "title": "Winston Churchill and His Woeful Wars"
  }
}

再算上这个对象有多少keys具有使用Object.keys


1
投票

你必须得到的数值为每个对象,因为你的最顶层的对象仅持有的作者,你的索引值数组为0,这将给你作者下的对象。

从这个对象,你再算上键,这是ISBN编号:

const data = [{"Arnold Bennett":{"9781784872359":{"thumbnail_image_url":"https://books-sn.s3.amazonaws.com/571b8c01-ed88-4cc1-8e0c-efe3de967147.jpg","title":"Clayhanger "}}},{"Agatha Christie":{"9780007527588":{"thumbnail_image_url":"http://books.google.com/books/content?id=BxlamwEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api","title":"Mrs. McGinty's Dead"},"9780008129590":{"thumbnail_image_url":"https://books-sn.s3.amazonaws.com/c125ee1d-c5ea-4827-a488-e9ee9c8afc8d.jpg","title":"The Clocks"},"9780007120857":{"thumbnail_image_url":"http://books.google.com/books/content?id=RAlvswEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api","title":"The Murder at the Vicarage"},"9780007556878":{"thumbnail_image_url":"http://books.google.com/books/content?id=Zb_inQEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api","title":"Dead Man's Folly"},"9780007120826":{"thumbnail_image_url":"http://books.google.com/books/content?id=Dve45zlLKbUC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api","title":"4.50 from Paddington"},"9780007121052":{"thumbnail_image_url":"http://books.google.com/books/content?id=QR9J95ZE2zcC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api","title":"Nemesis"},"9780007527519":{"thumbnail_image_url":"http://books.google.com/books/content?id=dOrsAQAACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api","title":"Five Little Pigs"},"9780007120963":{"thumbnail_image_url":"https://books-sn.s3.amazonaws.com/ba1fcb40-5383-40d9-bdfc-0e9d285b2321.jpeg","title":"A Murder is Announced "},"9780008196233":{"thumbnail_image_url":"https://books-sn.s3.amazonaws.com/3a08b20a-377e-4b96-890c-1ecc3e09e595.jpg","title":"The Sittaford Mystery"},"9780008196615":{"thumbnail_image_url":"http://books.google.com/books/content?id=6E8FvgAACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api","title":"At Bertram's Hotel"},"9780008129484":{"thumbnail_image_url":"https://books-sn.s3.amazonaws.com/fe46e96d-7f24-40f1-92e1-b60f10af9dd1.jpg","title":"The Mystery of the Blue Train"},"9780007314669":{"thumbnail_image_url":"https://books-sn.s3.amazonaws.com/cd40bc91-4c28-4f97-872a-ba24f10b0564.jpg","title":"An Autobiography"},"9780006513773":{"thumbnail_image_url":"http://books.google.com/books/content?id=JMqChKyf-0EC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api","title":"Hercule Poirot"},"9780007527502":{"thumbnail_image_url":"http://books.google.com/books/content?id=9CO1mgEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api","title":"Murder on the Orient Express"},"9780007527496":{"thumbnail_image_url":"http://books.google.com/books/content?id=ERPosgEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api","title":"The Mysterious Affair at Styles"},"9780007120833":{"thumbnail_image_url":"http://books.google.com/books/content?id=lA1KuAEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api","title":"The Body in the Library"},"9780007120734":{"thumbnail_image_url":"http://books.google.com/books/content?id=CEEUPYluIeEC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api","title":"Five Little Pigs"},"9780007120970":{"thumbnail_image_url":"https://books-sn.s3.amazonaws.com/fd1f1d09-c08f-4f35-8be1-a35862d9e4b6.jpg","title":"A Pocket Full of Rye"},"9780007120864":{"thumbnail_image_url":"http://books.google.com/books/content?id=MK9JNwoZAncC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api","title":"The Thirteen Problems"},"9780008125929":{"thumbnail_image_url":"http://books.google.com/books/content?id=kxK7rQEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api","title":"The Secret Adversary (隱身魔鬼)"},"9780007121069":{"thumbnail_image_url":"http://books.google.com/books/content?id=ddlQBfuKWzwC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api","title":"Sleeping Murder"},"9780008164898":{"thumbnail_image_url":"http://books.google.com/books/content?id=JCX2sgEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api","title":"Cards on the Table"}}},{"Alain De Botton":{"9780141035192":{"thumbnail_image_url":"http://books.google.com/books/content?id=l4FGPwAACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api","title":"The Consolations of Philosophy"}}},{"Alan Hollinghurst":{"9781447275183":{"thumbnail_image_url":"https://books-sn.s3.amazonaws.com/b46fc3f6-4950-4e4d-a734-93abd10b5351.jpeg","title":"The Line of Beauty"}}},{"Alan MacDonald":{"9781407108315":{"thumbnail_image_url":"http://books.google.com/books/content?id=1aEGOwAACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api","title":"Winston Churchill and His Woeful Wars"}}},{"Aldous Huxley":{"9780099518471":{"thumbnail_image_url":"http://books.google.com/books/content?id=3zl4oJMUskoC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api","title":"Brave New World"}}},{"Alessandro Manzoni":{"9780140442748":{"thumbnail_image_url":"http://books.google.com/books/content?id=azLiQUtMSncC&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api","title":"The Betrothed"},"9780241259078":{"thumbnail_image_url":"http://books.google.com/books/content?id=nyo8jwEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api","title":"The Betrothed"}}}];

const countISBNs = entry => Object.keys(Object.values(entry)[0]).length;

const sorted = data.sort((a, b) => countISBNs(b) - countISBNs(a));

console.log(sorted);
© www.soinside.com 2019 - 2024. All rights reserved.