Asked Jan 28th, 4:42 AM 149 0 3
  • 149 0 3
+1

Convert array to object key

Share
  • 149 0 3

**Input: **

    {id: 0, name: "A"},
    {id: 1, name: "B"},
    {id: 2, name: "C"},
    {id: 3, name: "D"},
    {id: 4, name: "E"},
    {id: 5, name: "F"},
    {id: 6, name: "G"},
    {id: 7, name: "H"},
] ```

**output:**
``` var object = {
    1: [
        {id: 0, name: "A"},
        {id: 1, name: "B"},
        {id: 2, name: "C"},
    ],
    2: [
         {id: 3, name: "D"},
        {id: 4, name: "E"},
        {id: 5, name: "F"},
    ],
    3: [
        {id: 6, name: "G"},
        {id: 7, name: "H"},
    ]
}```
Các bác cho em hỏi javascript làm như trên thì code thế nào ạ, em xin keyword với.

3 ANSWERS


Answered Jan 28th, 7:06 AM
Accepted
0

keyword : chunk array.

Nếu bạn sử dụng thư viện như lodash sẽ có hàm hỗ trợ luôn là chunk(array, size_chunk) https://lodash.com/docs/4.17.15#chunk

Không thì đối với javascript thuần chắc phải viết một vòng lặp rồi slice các giá trị của mảng

function chunkArray(arr, size) {
  var arr = [];
  for(var i = 0; i < arr.length; i += size) {
    arr.push(arr.slice(i, i+size));
  }
  return arr;
}
console.log(chunkArray(["a", "b", "c", "d","e"], 2));
Share
Avatar Do Minh Hoang @hoangdng
Jan 29th, 6:55 AM

Cảm ơn bạn

0
| Reply
Share
Answered Jan 28th, 6:00 AM
0

Để chuyển Object thành Array thì có thể làm như này:

Object.keys(object).map(item => object[item])

Nhưng để kết quả ra như bạn thì phải tiếp tục xử lý mảng kia, cứ 3 index thì push vào 1 mảng mới

Share
Answered Jan 28th, 6:13 AM
0

php thì gọi cái này là array_chunk

js thì không có hàm sẵn, bạn dùng loop rồi đẩy vào array tạm thôi

có thể xem code ở đây https://stackoverflow.com/questions/8495687/split-array-into-chunks

sau khi xong thì dùng tiếp cái này

Object.assign({}, ['a','b','c']); // {0:"a", 1:"b", 2:"c"}

hoặc cái này

{ ...['a', 'b', 'c'] }

Share
Viblo
Let's register a Viblo Account to get more interesting posts.