簡體   English   中英

為數組中的每個 JavaScript 對象查找為 null 的屬性

[英]Find properties that are null for every JavaScript object in an array

例如,如果我有一個 JavaScript 對象數組,例如:

var jsObjects = [
   {a: 1, b: 2, c: null, d: 3, e: null}, 
   {a: 3, b: null, c: null, d: 5, e: null}, 
   {a: null, b: 6, c: null, d: 3, e: null}, 
   {a: null, b: 8, c: null, d: 1, e: null}
];

我希望輸出為 ["c", "e"]。

我當前的解決方案是為每列調用一個函數並循環遍歷 jsObjects:

function isAllNull(col) {
    var allNulls = true;
    for (var i = 0; i < data.length; i++) {
    
       if (jsObjects[i].col != null) { 
             allNulls = false;
             break;
        }
      }
}

但是我希望這個函數更通用,以便它可以使用任意數量的任意簡單(即非對象)屬性的 jsObjects。 數組中的對象都具有相同的屬性。

如果您保證數組中的每個對象都具有相同的屬性,則:

  • 從數組中的第一個對象中獲取鍵
  • reduce鍵並測試原始數組中的every鍵是否為null
  • 如果every鍵都返回 true,則在輸出中包含該鍵

例子:

 var jsObjects = [ {a: 1, b: 2, c: null, d: 3, e: null}, {a: 3, b: null, c: null, d: 5, e: null}, {a: null, b: 6, c: null, d: 3, e: null}, {a: null, b: 8, c: null, d: 1, e: null} ]; function nullCols(arr) { var keys = Object.keys(arr[0]); var nulls = keys.reduce((output, key) => { if (arr.every(item => item[key] === null)) { output.push(key); } return output; }, []); return nulls; } console.log(nullCols(jsObjects));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM