首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Array of Objects中的空值替换为以前填充的值

将Array of Objects中的空值替换为以前填充的值
EN

Stack Overflow用户
提问于 2021-07-02 20:12:59
回答 3查看 87关注 0票数 1

我有一个对象数组,对象的一些值是空的,我想用前一个对象的值替换它们,下面是一个示例:

代码语言:javascript
复制
[
  {
    name: "Mark",
    surname: "Something",
  },
  {
    name: "",
    surname: "",
  },
  {
    name: "Richard",
    surname: "SomeSurname",
  },
  {
    name: "",
    surname: "",
  },
];

我的目标是用以前的值替换空值:

代码语言:javascript
复制
[
  {
    name: "Mark",
    surname: "Something",
  },
  {
    name: "Mark",
    surname: "Something",
  },
  {
    name: "Richard",
    surname: "SomeSurname",
  },
  {
    name: "Richard",
    surname: "SomeSurname",
  },
];
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-07-02 20:19:39

代码语言:javascript
复制
const a = [
  {
    name: "Mark",
    surname: "Something"
  },{
    name: "",
    surname: "" 
  },{
    name: "Richard",
    surname: "SomeSurname"
  },{
    name: "",
    surname: ""
  }
];
for (let i = 0; i < Math.trunc(a.length / 2); ++i) {
  a[2 * i + 1].name = a[2 * i].name;
  a[2 * i + 1].surname = a[2 * i].surname;
}
console.log(a);

票数 0
EN

Stack Overflow用户

发布于 2021-07-02 20:22:03

代码语言:javascript
复制
const array = [
  {
    name: "Mark",
    surname: "Something",
  },
  {
    name: "",
    surname: "",
  },
  {
    name: "Richard",
    surname: "SomeSurname",
  },
  {
    name: "",
    surname: "",
  },
];

//create new array with map es6
let newArray = array.map( (obj,index) => { 
  if( !obj.name && !obj.surname ){
    //if values are empty, create a new one with the previous index
    return { name: array[index-1].name, surname: array[index-1].surname }
  }
  //else return original value
  return obj
})

console.log( newArray );

票数 1
EN

Stack Overflow用户

发布于 2021-07-02 20:21:39

我会遍历列表并保存最后一个非空对象os的索引,然后当我遇到一个空对象时更新它的值:

代码语言:javascript
复制
const list = [
  {
    name: "Mark",
    surname: "Something",
  },
  {
    name: "",
    surname: "",
  },
  {
    name: "Richard",
    surname: "SomeSurname",
  },
  {
    name: "",
    surname: "",
  },
];

let emptyIndex = 0;
for (let i = 0; i < list.length; ++i) {
  if (list[i].name) {
    fullIndex = i;
  } else {
    list[i].name = list[fullIndex].name;
    list[i].surname = list[fullIndex].surname;
  }
}

console.log(list);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68225003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档