如何将一组对象添加到单个数组中?

时间:2019-05-06 06:44:45

标签: javascript jquery arrays object

我要插入主题和消息相同但收件人不同的电子邮件收件人列表。

我已经尝试过以下所示的方法,它获得的是要发送的收件人数,但是对于收件人,它只是获得了推送到数组中的最后一个收件人,这就是为什么将其发送给同一收件人3次的原因

const abc$ = new BehaviorSubject(123).asObservable().pipe(
  tap((val) => console.log('pipe: ', val))
);
abc$.subscribe((val) => console.log('subscribe: ', val));

2 个答案:

答案 0 :(得分:2)

您只分配一次addEmailObj

var addEmailObj = []

这意味着每次您更改或推动addEmailObj时,您都在更改或推动同一对象。而是在数组内创建它:

for (let i=0 ; i<rowData.length; i++) {
  const addEmailObj = {};

请注意,由于您没有将其用作数组,因此不应将其定义为数组-只需使用{}而不是[]将其定义为普通对象即可。 (此外,最好不要隐式创建全局变量-正确声明i)如果可能的话,还应使用ES6语法(letconst)而不是ES5语法声明变量。避免var的吊起引起的混乱。 (var具有功能范围,而不是块范围)

答案 1 :(得分:0)

               // let emailsObj = [];
            let addEmailObj = [];
            for (i=0 ; i<rowData.length; i++) {

    let new_user = {
        'claimNo':$('#motorClaimNoInfo').val().trim().toUpperCase(),
        'fileNo':$('#motorClaimNoInfo').attr('fileNo'),
        'claimDate':$('#motorClaimNoInfo').attr('claimDate'),
        'senderCd':$('#motorClaimFileComposeEmailFrom').attr('username'),
        'sender':$('#motorClaimFileComposeEmailFrom').val(),
        'senderEmail':$('#motorClaimFileComposeEmailFrom').attr('userEmail'),
        'recipientCd':rowData[i].username,
        'recipient':rowData[i].userFullName,
        'recipientEmail':rowData[i].userEmail,
        'subject':$('#motorClaimFileComposeEmailSubj').val().trim().toUpperCase(),
        'message':$('#motorClaimFileComposeEmailMsg').val().trim().toUpperCase()

    };
                addEmailObj.push(new_user);
                // emailsObj.push(rowData[i].username);
            }**

>