Thay thế khóa trong mảng đối tượng javascript

Ai đó biết về các giai đoạn đường ống tổng hợp mongodb có thể giúp tôi không? . Tôi cần chuyển đổi khóa “_id” thành “id” của các đối tượng bên trong một mảng của tài liệu. Vì vậy, tôi cần phải làm điều này

{
            "reviews": [
                {
                    "_id": "61e412003c043e620a4ca97d"
                },
                {
                    "_id": "61e412153c043e620a4ca983"
                },
                {
                    "_id": "61e4127c3c043e620a4ca989"
                }
            ],
            "id": "61e411be3c043e620a4ca979"
}

trở thành này

{
            "reviews": [
                {
                    "id": "61e412003c043e620a4ca97d"
                },
                {
                    "id": "61e412153c043e620a4ca983"
                },
                {
                    "id": "61e4127c3c043e620a4ca989"
                }
            ],
            "id": "61e411be3c043e620a4ca979"
}

Tôi quản lý để làm điều này với hai giai đoạn đường ống. addFields [để thêm id] → dự án [để xóa _id] với đầu vào này cho toán tử $addFields

{
  id: "$_id",
  reviews: { 
    $map: 
      { 
        input: "$reviews", 
        as: "review", 
        in: { 
          $setField: { 
              field: "id",
              input: "$$review",
              value: "$$review._id"
          } 
        }
      }
  }
}

Nó đã làm được điều đó, nhưng phiên bản mongodb sản xuất của tôi, 4. 4. 11, không nhận ra toán tử $setField và nó hiện đang bị hỏng vì điều đó

Thí dụ

Tạo một đối tượng Array Iterator, chứa các khóa của mảng

const trái cây = ["Chuối", "Cam", "Táo", "Xoài"];
const keys = trái cây. phím[];

let text = "";
for [let x of keys] {
  text += x + "
";
}

Tự mình thử »

Sử dụng đối tượng tích hợp. keys[] Phương thức

const fruit = ["Chuối", "Cam", "Táo", "Xoài"];
const keys = Đối tượng. phím[trái cây];

let text = "";
for [let x of keys] {
  text += x + "
";
}

Tự mình thử »

Định nghĩa và cách sử dụng

Phương thức

{
            "reviews": [
                {
                    "id": "61e412003c043e620a4ca97d"
                },
                {
                    "id": "61e412153c043e620a4ca983"
                },
                {
                    "id": "61e4127c3c043e620a4ca989"
                }
            ],
            "id": "61e411be3c043e620a4ca979"
}
6 trả về một đối tượng Array Iterator với các khóa của một mảng

Phương thức

{
            "reviews": [
                {
                    "id": "61e412003c043e620a4ca97d"
                },
                {
                    "id": "61e412153c043e620a4ca983"
                },
                {
                    "id": "61e4127c3c043e620a4ca989"
                }
            ],
            "id": "61e411be3c043e620a4ca979"
}
6 không thay đổi mảng ban đầu

cú pháp

Thông số

Giá trị trả về

TypeDescriptionMột mảngMột đối tượng Array Iterator chứa các khóa của một mảng

Hỗ trợ trình duyệt

{
            "reviews": [
                {
                    "id": "61e412003c043e620a4ca97d"
                },
                {
                    "id": "61e412153c043e620a4ca983"
                },
                {
                    "id": "61e4127c3c043e620a4ca989"
                }
            ],
            "id": "61e411be3c043e620a4ca979"
}
6 là một tính năng ECMAScript6 [ES6]

ES6 [JavaScript 2015] được hỗ trợ trong tất cả các trình duyệt hiện đại

ChromeEdgeFirefoxSafariOperaCóCóCóCóCó

{
            "reviews": [
                {
                    "id": "61e412003c043e620a4ca97d"
                },
                {
                    "id": "61e412153c043e620a4ca983"
                },
                {
                    "id": "61e4127c3c043e620a4ca989"
                }
            ],
            "id": "61e411be3c043e620a4ca979"
}
6 không được hỗ trợ trong Internet Explorer 11 [hoặc cũ hơn]

Một iterable, chẳng hạn như

{
  id: "$_id",
  reviews: { 
    $map: 
      { 
        input: "$reviews", 
        as: "review", 
        in: { 
          $setField: { 
              field: "id",
              input: "$$review",
              value: "$$review._id"
          } 
        }
      }
  }
}
0 hoặc
{
  id: "$_id",
  reviews: { 
    $map: 
      { 
        input: "$reviews", 
        as: "review", 
        in: { 
          $setField: { 
              field: "id",
              input: "$$review",
              value: "$$review._id"
          } 
        }
      }
  }
}
1, chứa danh sách các đối tượng. Mỗi đối tượng nên có hai thuộc tính

{
  id: "$_id",
  reviews: { 
    $map: 
      { 
        input: "$reviews", 
        as: "review", 
        in: { 
          $setField: { 
              field: "id",
              input: "$$review",
              value: "$$review._id"
          } 
        }
      }
  }
}
2

Một chuỗi hoặc ký hiệu đại diện cho khóa thuộc tính

{
  id: "$_id",
  reviews: { 
    $map: 
      { 
        input: "$reviews", 
        as: "review", 
        in: { 
          $setField: { 
              field: "id",
              input: "$$review",
              value: "$$review._id"
          } 
        }
      }
  }
}
3

Giá trị tài sản

Thông thường, đối tượng này được triển khai dưới dạng một mảng hai phần tử, với phần tử đầu tiên là khóa thuộc tính và phần tử thứ hai là giá trị thuộc tính

Giá trị trả về

Một đối tượng mới có thuộc tính được cung cấp bởi các mục của iterable

Sự mô tả

Phương thức

{
  id: "$_id",
  reviews: { 
    $map: 
      { 
        input: "$reviews", 
        as: "review", 
        in: { 
          $setField: { 
              field: "id",
              input: "$$review",
              value: "$$review._id"
          } 
        }
      }
  }
}
4 lấy danh sách các cặp khóa-giá trị và trả về một đối tượng mới có các thuộc tính được cung cấp bởi các mục nhập đó. Đối số
{
  id: "$_id",
  reviews: { 
    $map: 
      { 
        input: "$reviews", 
        as: "review", 
        in: { 
          $setField: { 
              field: "id",
              input: "$$review",
              value: "$$review._id"
          } 
        }
      }
  }
}
5 dự kiến ​​sẽ là một đối tượng triển khai phương thức
const map = new Map[[
  ["foo", "bar"],
  ["baz", 42],
]];
const obj = Object.fromEntries[map];
console.log[obj]; // { foo: "bar", baz: 42 }
2. Phương thức trả về một đối tượng lặp tạo ra các đối tượng giống như mảng hai phần tử. Phần tử đầu tiên là một giá trị sẽ được sử dụng làm khóa thuộc tính và phần tử thứ hai là giá trị để liên kết với khóa thuộc tính đó

{
  id: "$_id",
  reviews: { 
    $map: 
      { 
        input: "$reviews", 
        as: "review", 
        in: { 
          $setField: { 
              field: "id",
              input: "$$review",
              value: "$$review._id"
          } 
        }
      }
  }
}
4 thực hiện ngược lại với
const map = new Map[[
  ["foo", "bar"],
  ["baz", 42],
]];
const obj = Object.fromEntries[map];
console.log[obj]; // { foo: "bar", baz: 42 }
4, ngoại trừ việc
const map = new Map[[
  ["foo", "bar"],
  ["baz", 42],
]];
const obj = Object.fromEntries[map];
console.log[obj]; // { foo: "bar", baz: 42 }
4 chỉ trả về các thuộc tính có khóa chuỗi, trong khi
{
  id: "$_id",
  reviews: { 
    $map: 
      { 
        input: "$reviews", 
        as: "review", 
        in: { 
          $setField: { 
              field: "id",
              input: "$$review",
              value: "$$review._id"
          } 
        }
      }
  }
}
4 cũng có thể tạo các thuộc tính có khóa ký hiệu

Ghi chú. Không giống như

const map = new Map[[
  ["foo", "bar"],
  ["baz", 42],
]];
const obj = Object.fromEntries[map];
console.log[obj]; // { foo: "bar", baz: 42 }
7,
{
  id: "$_id",
  reviews: { 
    $map: 
      { 
        input: "$reviews", 
        as: "review", 
        in: { 
          $setField: { 
              field: "id",
              input: "$$review",
              value: "$$review._id"
          } 
        }
      }
  }
}
4 không sử dụng giá trị của
const map = new Map[[
  ["foo", "bar"],
  ["baz", 42],
]];
const obj = Object.fromEntries[map];
console.log[obj]; // { foo: "bar", baz: 42 }
9, vì vậy việc gọi nó trên một hàm tạo khác sẽ không tạo ra các đối tượng thuộc loại đó

ví dụ

Chuyển đổi bản đồ thành đối tượng

Với

const arr = [
  ["0", "a"],
  ["1", "b"],
  ["2", "c"],
];
const obj = Object.fromEntries[arr];
console.log[obj]; // { 0: "a", 1: "b", 2: "c" }
0, bạn có thể chuyển đổi từ
{
  id: "$_id",
  reviews: { 
    $map: 
      { 
        input: "$reviews", 
        as: "review", 
        in: { 
          $setField: { 
              field: "id",
              input: "$$review",
              value: "$$review._id"
          } 
        }
      }
  }
}
1 sang
const arr = [
  ["0", "a"],
  ["1", "b"],
  ["2", "c"],
];
const obj = Object.fromEntries[arr];
console.log[obj]; // { 0: "a", 1: "b", 2: "c" }
2

const map = new Map[[
  ["foo", "bar"],
  ["baz", 42],
]];
const obj = Object.fromEntries[map];
console.log[obj]; // { foo: "bar", baz: 42 }

Chuyển đổi một mảng thành một đối tượng

Với

const arr = [
  ["0", "a"],
  ["1", "b"],
  ["2", "c"],
];
const obj = Object.fromEntries[arr];
console.log[obj]; // { 0: "a", 1: "b", 2: "c" }
0, bạn có thể chuyển đổi từ
{
  id: "$_id",
  reviews: { 
    $map: 
      { 
        input: "$reviews", 
        as: "review", 
        in: { 
          $setField: { 
              field: "id",
              input: "$$review",
              value: "$$review._id"
          } 
        }
      }
  }
}
0 sang
const arr = [
  ["0", "a"],
  ["1", "b"],
  ["2", "c"],
];
const obj = Object.fromEntries[arr];
console.log[obj]; // { 0: "a", 1: "b", 2: "c" }
2

________số 8

Các phép biến đổi đối tượng

Với

const arr = [
  ["0", "a"],
  ["1", "b"],
  ["2", "c"],
];
const obj = Object.fromEntries[arr];
console.log[obj]; // { 0: "a", 1: "b", 2: "c" }
0, phương thức đảo ngược của nó là
const map = new Map[[
  ["foo", "bar"],
  ["baz", 42],
]];
const obj = Object.fromEntries[map];
console.log[obj]; // { foo: "bar", baz: 42 }
4 và các phương thức thao tác mảng, bạn có thể chuyển đổi các đối tượng như thế này

Làm cách nào bạn có thể thay thế một phần tử hiện có trong một đối tượng trong JavaScript?

Phương pháp 1. Sử dụng phương thức mối nối[] .

Mảng có thể có giá trị khóa JavaScript không?

Mảng trong javascript thường chỉ được sử dụng với các khóa số, tăng tự động, nhưng đối tượng javascript có thể chứa các cặp giá trị khóa được đặt tên , các hàm và thậm chí .

Chủ Đề