1650 Stimmen

Leere Elemente aus einem Array in Javascript entfernen

Wie kann ich leere Elemente aus einem Array in JavaScript entfernen?

Gibt es einen einfachen Weg, oder muss ich eine Schleife durchlaufen und sie manuell entfernen?

1voto

Sandeep M Punkte 232

Dies könnte Ihnen helfen: https://lodash.com/docs/4.17.4#remove

var details = [
            {
                reference: 'ref-1',
                description: 'desc-1',
                price: 1
            }, {
                reference: '',
                description: '',
                price: ''
            }, {
                reference: 'ref-2',
                description: 'desc-2',
                price: 200
            }, {
                reference: 'ref-3',
                description: 'desc-3',
                price: 3
            }, {
                reference: '',
                description: '',
                price: ''
            }
        ];

        scope.removeEmptyDetails(details);
        expect(details.length).toEqual(3);

scope.removeEmptyDetails = function(details){
            _.remove(details, function(detail){
                return (_.isEmpty(detail.reference) && _.isEmpty(detail.description) && _.isEmpty(detail.price));
            });
        };

1voto

Jitendra virani Punkte 326
var data= { 
    myAction: function(array){
        return array.filter(function(el){
           return (el !== (undefined || null || ''));
        }).join(" ");
    }
}; 
var string = data.myAction(["I", "am","", "working", "", "on","", "nodejs", "" ]);
console.log(string);

Ausgabe:

Ich arbeite an Nodejs

Es wird ein leeres Element aus dem Array entfernt und ein anderes Element angezeigt.

0voto

XDavidT Punkte 114

Wenn Sie NodeJS verwenden, können Sie sauber-tief Paket. Verwenden Sie npm i clean-deep vor.

const cleanDeep = require('clean-deep');
var array = [0, 1, null, 2, "", 3, undefined, 3,,,,,, 4,, 4,, 5,, 6,,,,];
const filterd = cleanDeep(array);
console.log(filterd);

0voto

John Slegers Punkte 41127

Der beste Weg, leere Elemente zu entfernen, ist die Verwendung von Array.prototype.filter() wie bereits in anderen Antworten erwähnt.

Leider, Array.prototype.filter() wird von IE<9 nicht unterstützt. Wenn Sie dennoch den IE8 oder eine noch ältere Version des IE unterstützen müssen, können Sie Folgendes verwenden Polyfill um die Unterstützung für Array.prototype.filter() in diesen Browsern:

if (!Array.prototype.filter) {
  Array.prototype.filter = function(fun/*, thisArg*/) {
    'use strict';
    if (this === void 0 || this === null) {
      throw new TypeError();
    }
    var t = Object(this);
    var len = t.length >>> 0;
    if (typeof fun !== 'function') {
      throw new TypeError();
    }
    var res = [];
    var thisArg = arguments.length >= 2 ? arguments[1] : void 0;
    for (var i = 0; i < len; i++) {
      if (i in t) {
        var val = t[i];
        if (fun.call(thisArg, val, i, t)) {
          res.push(val);
        }
      }
    }
    return res;
  };
}

0voto

bittnkr Punkte 89

Eine Lösung vor Ort:

function pack(arr) { // remove undefined values
  let p = -1
  for (let i = 0, len = arr.length; i < len; i++) {
    if (arr[i] !== undefined) { if (p >= 0) { arr[p] = arr[i]; p++ } }
    else if (p < 0) p = i
  }
  if (p >= 0) arr.length = p
  return arr
}

let a = [1, 2, 3, undefined, undefined, 4, 5, undefined, null]
console.log(JSON.stringify(a))
pack(a)
console.log(JSON.stringify(a))

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X