如何拼接's对象的空属性到数组中

How to splice an empty property of an object that's into an array?

本文关键字:对象 属性 数组 何拼接 拼接      更新时间:2023-09-26

我有一个对象数组,我想在对象为空时对其属性进行切片。

例如:

var quotes = [
{
    quote: "Bolshevism is not a policy; it is a disease. It is not a creed; it is a pestilence.",
    source: "Winston Churchill",
    citation: "",
    year: "29 May 1919",
    place: ""
},
{
    quote: "Learn while you live",
    source: "",
    citation: "X",
    year: "1950",
    place: ""
}];

我有一个这样的对象列表,对象名称随机为空。

我想只打印非空的属性到页面。

所以我试着循环遍历对象找到indexOf()空属性并拼接它:

function findEmptyProp(quotes) {
   for (prop in quotes) {
     if(quotes[i].children === '') {
        return indexOf(quotes[i]);
        quotes.splice(i, 1);
}}}

谢谢你的帮助

splice用于数组,但当您处理对象时,您必须使用delete

你可以尝试这样做:

var quotes = [{
  quote: "Bolshevism is not a policy; it is a disease. It is not a creed; it is a pestilence.",
  source: "Wyston Churchill",
  citation: "",
  year: "29 May 1919",
  place: ""
}, {
  quote: "Learn while you live",
  source: "",
  citation: "X",
  year: "1950",
  place: ""
}];
quotes.forEach(function(o){
  for (var k in o){
    if(o.hasOwnProperty(k) && isEmpty(o[k])){
      delete o[k];
    }
  }
});
function isEmpty(val){
  return val === undefined || 
    val === null || 
    (typeof(val) === "object" && Object.keys(val).length === 0) || 
    (typeof(val) === "string" && val.trim().length === 0)
}
console.log(quotes)

正如deze所评论的,我增加了对其他情况的处理,其中value可以被认为是空的。此外,您应该检查hasOwnProperty更新自己的属性。

供参考:使用Object.keys(obj)返回一个数组,毫不奇怪,一个对象的键。例如…

var arrayOfObjects = [
  {
    prop1: '1',
    prop2: '2',
    prop3: ''
  },
  {
    prop1: '1',
    prop2: '',
    prop3: '3'
  },
  {
    prop1: '',
    prop2: '2',
    prop3: '3'
  }
];
arrayOfObjects.forEach(function(obj) {
    /* 'obj' = each object in 'arrayOfObjects' */
    Object.keys(obj).forEach(function(key) {
        /* 'key' = each key in 'obj' */
        if (obj[key] === '') delete obj[key];
    });
});
/* test arrayOfObjects */
arrayOfObjects.forEach(function(obj) {
    console.debug(obj);
});
/** =>
    Object { prop1: "1", prop2: "2" }
    Object { prop1: "1", prop3: "3" }
    Object { prop2: "2", prop3: "3" }
**/

在对象上使用像.forEach(), .filter(), .sort(), .reduce(), .map()等数组函数真的很方便。