cuốn sách gpt4 ai đã làm

Thêm mục vào mảng hoặc thay thế nó nếu nó có cùng ID

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-02 21:11:30 25 4
mua khóa gpt4 Nike

Tôi có mảng đối tượng này

nguồn var = [
{id: 1, nhãn: "một"},
{id: 2, nhãn: "hai"},
{id: 3, nhãn: "ba"}
];

Tôi cần thêm một mục hoặc thay thế nó nếu nó có cùng id

var new_sub = {id: 1, nhãn: "nhãn mới cho một"};
var new_add = {id: 4, nhãn: "bốn"};

nguồn = myFunc(new_sub);
nguồn = myFunc(new_add);

hàm myFunc(obj) {
return (source.findIndex(x => x.id === obj.id) === -1) ?
source.concat(obj) : source.map((item) => {
return (item.id === obj.id) ? obj : item;
});
}

Mã này hoạt động tốt, nhưng có cách nào tốt hơn không? Bạn có thể kiểm tra mã của tôi với đoạn mã này:

nguồn var = [
{id: 1, nhãn: "một"},
{id: 2, nhãn: "hai"},
{id: 3, nhãn: "ba"}
];
var new_sub = {id: 1, nhãn: "nhãn mới cho một"};
var new_add = {id: 4, nhãn: "bốn"};

nguồn = myFunc(new_sub);
nguồn = myFunc(new_add);

hàm myFunc(obj) {
return (source.findIndex(x => x.id === obj.id) === -1) ?
source.concat(obj) : source.map((item) => {
return (item.id === obj.id) ? obj : item;
});
}

//IN
var html = "";
source.map((item) => {
html += "
  • " + item.id + " - " + item.label + "
  • ";
    });
    $("#resp").html(html);


    câu trả lời hay nhất

    Bạn đang thực hiện nhiều lần truyền vào mảng (một lần trong tìm chỉ mục vào, và sau đó một lần vào concat hoặc bản đồ ), điều này là không cần thiết. Chỉ cần một lượt là đủ:

    hàm myFunc(a, obj) {
    hãy tìm thấy = sai;
    kết quả const = a.map(e => {
    if (!found && e.id === obj.id) {
    tìm thấy = đúng;
    trả lại đối tượng;
    } khác {
    trả lại e;
    }
    });
    nếu (! tìm thấy) {
    result.push(obj);
    }
    return result;
    }

    Lưu ý rằng tôi đang truyền mảng nguồn dưới dạng tham số cho hàm, vì vậy nó không có tác dụng phụ.

    nguồn var = [
    {id: 1, nhãn: "một"},
    {id: 2, nhãn: "hai"},
    {id: 3, nhãn: "ba"}
    ];

    var new_sub = {id: 1, nhãn: "nhãn mới cho một"};
    var new_add = {id: 4, nhãn: "bốn"};

    nguồn = myFunc(nguồn, new_sub);
    nguồn = myFunc(nguồn, new_add);

    console.log(nguồn);

    hàm myFunc(a, obj) {
    hãy tìm thấy = sai;
    kết quả const = a.map(e => {
    if (!found && e.id === obj.id) {
    tìm thấy = đúng;
    trả lại đối tượng;
    } khác {
    trả lại e;
    }
    });
    nếu (! tìm thấy) {
    result.push(obj);
    }
    return result;
    }

    Tất nhiên, nếu mảng nhỏ và bạn biết đây là trường hợp tiêu chuẩn thì điều đó không thực sự quan trọng.

    Nếu bạn muốn lạm dụng (theo ý kiến ​​​​của tôi) , toán tử để giữ mọi thứ đơn giản:

    hàm myFunc(a, obj) {
    hãy tìm thấy = sai;
    const result = a.map(e => e.id === obj.id ? (found = true, obj) : e);
    nếu (! tìm thấy) {
    result.push(obj);
    }
    return result;
    }

    Về javascript - thêm một mục vào một mảng hoặc thay thế nó nếu nó có cùng ID, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/45459703/

    25 4 0
    Chứng chỉ ICP Bắc Kinh số 000000
    Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
    Xem sitemap của VNExpress