【问题标题】:How to push array to JSON object in angular如何以角度将数组推送到 JSON 对象
【发布时间】:2018-11-10 08:04:37
【问题描述】:

我有一个像下面这样的 obj

let obj = {staff_changes: []};

这里有一些测试用例:

  1. 测试用例 --> 成功

    for (let i = 0; i < 4; i++) {
     obj.staff_changes.push({
      id: 'staff'+i
     });
    }
    
  2. 测试用例 --> 失败

    let obj = {staff_changes: []};
    for (let i = 0; i < 4; i++) {
     obj.staff_changes.push({
      id: i,
      newStaff.push({
       id: 'staff'+i
      });
    
     });
    }
    console.log(obj);
    

在测试用例 2 中,我试图推送一个名为“newStaff”的数组,即使它不在 obj 中。

在控制台中显示 4 个项目的 obj,但 'newStaff' 没有推送到 obj。

【问题讨论】:

  • 请发布您的预期输出
  • 什么是newStaff,它在哪里?
  • 在输出中仅添加了“id”字段,但未添加“newstaff”数组

标签: javascript json angular typescript


【解决方案1】:

newStaff 变量未在测试用例 2 中找到,在 for 循环中声明 newStaff

let obj = {staff_changes: []};

for (let i = 0; i < 4; i++) {
let newStaff=[];
 obj.staff_changes.push({
  id: i,
  newStaff:newStaff.push({
   id: 'staff'+i
  });

 });
}

console.log(obj);

【讨论】:

  • 最好在 for 循环之外声明 newStaff,因为这样每次循环执行时都会创建新变量
  • @Pardeep Jain 没错,你是对的,但是如果我们在 for 循环之外声明 newStaff,那么它应该在 for 循环中初始化,否则这个变量包含旧值,所以我在里面声明它for循环
  • 是的,但是使用你的代码它总是会清空你的数组,那么每次推入空数组的逻辑是什么?
  • 是的,在这种情况下,它每次都会清空,但假设他/她需要在下一行代码中将任何东西推入 for 循环,所以在这种情况下我认为这将是有意义的跨度>
  • 如果您认为这个答案有帮助,请点赞,谢谢
【解决方案2】:

您应该将newStaff 定义为数组变量以推送数据。而且您还错过了在数组对象中定义 key 名称。

试试这个

let obj = {staff_changes: []};
let newStaff=[];
for (let i = 0; i < 4; i++) {
 newStaff.push({id: 'staff' +i});
 obj.staff_changes.push({
  id: i,
  newStaff: newStaff
 });
}
console.log(obj);

【讨论】:

    【解决方案3】:

    你需要这段代码-

    for (let i = 0; i < 4; i++) {
     obj.staff_changes.push({
      id: i,
      key: {
       id: 'staff'+i
      }
    
     });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-28
      • 2019-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 2021-05-31
      • 1970-01-01
      相关资源
      最近更新 更多