Yêu cầu thg 1 28, 2021 4:42 SA 192 0 3
  • 192 0 3
+1

Convert array to object key

Chia sẻ
  • 192 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 CÂU TRẢ LỜI


Đã trả lời thg 1 28, 2021 7:06 SA
Đã được chấp nhận
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));
Chia sẻ
Avatar Do Minh Hoang @hoangdng
thg 1 29, 2021 6:55 SA

Cảm ơn bạn

Đã trả lời thg 1 28, 2021 6:00 SA
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

Chia sẻ
Đã trả lời thg 1 28, 2021 6:13 SA
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'] }

Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí