繁体   English   中英

如果 name 值为空,我需要将其更改为 Javascript 中的数组末尾

[英]If the name value is empty, I need to change it to the end of the array in Javascript

我有一个数组。 如果 name 值为空,我需要将其更改为数组的末尾,我该如何在 Javascript 中做到这一点?

前任:

 const data : [
   {
     id:0,
     name:"gorkem"
   }
   {
     id:1,
     name:""
   }
   {
     id:2,
     name:"ahmet"
   }
 ];

代替

const data : [
   {
     id:0,
     name:"gorkem"
   }
   {
     id:2,
     name:"ahmet"
   }
   {
     id:1,
     name:""
   }
 ];

使用两个调用进行过滤,一个用于获取具有非空名称的项目,另一个具有空名称。 然后将这两个 arrays 连接起来。

let non_empty = data.filter(el => el.name);
let empty = data.filter(el => !el.name);
let result = non_empty.concat(empty);

您可以根据“名称”的“真实性”对数组进行排序。

const data = [{
    id:0,
    name:"gorkem"
}, {
    id:1,
    name:""
}, {
    id:2,
    name:"ahmet"
}];

console.log(data.sort((a,b)=>!a.name - !b.name));

上面,我们基本上是在滥用这样一个事实,即空字符串是假值,相当于 0,而非空字符串是真值,相当于 1。每个都用“。”取反。 获得您所追求的反向排序顺序并将它们实际视为布尔值。

结果:

[
    {
        "id": 0,
        "name": "gorkem"
    },
    {
        "id": 2,
        "name": "ahmet"
    },
    {
        "id": 1,
        "name": ""
    }
]

首先你需要有一个有效的数组:

const data = [{
    id:0,
    name:"gorkem"
}, {
    id:1,
    name:""
}, {
    id:2,
    name:"ahmet"
}];

因此,从那开始,您可以使用循环删除空名称元素并添加到末尾:

for (let i = 0; i < data.length; i++) {
    if (data[i].name === '') {
        let val = data[i];
        data.splice(i, 1);
        data.push(val);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM