鍍金池/ 問(wèn)答/HTML/ 利用某個(gè)外部取到的值是否存在來(lái)判斷即將循環(huán)中對(duì)應(yīng)值是否顯示

利用某個(gè)外部取到的值是否存在來(lái)判斷即將循環(huán)中對(duì)應(yīng)值是否顯示

問(wèn)題描述

我現(xiàn)要循環(huán)這個(gè)數(shù)組

{
  father: '爸爸',
  mother: '媽媽',
  husband: '老公',
  wife: '老婆',
  brother: '兄弟',
  sister: '姐妹',
  son: '兒子',
  daughter: '女兒',
};

我想通過(guò)從外部得到爸爸、媽媽、老公、老婆的值來(lái)決定是否顯示循環(huán)中爸爸、媽媽、老公、老婆,如何實(shí)現(xiàn)?
例如,我外部拿到爸爸的值為空,那就把循環(huán)中爸爸輸出顯示出來(lái)

問(wèn)題出現(xiàn)的環(huán)境背景及自己嘗試過(guò)哪些方法

相關(guān)代碼

// 請(qǐng)把代碼文本粘貼到下方(請(qǐng)勿用圖片代替代碼)

function getMenu(d) {
        //獲取父親的信息
        var father = {};
        function getFather(d) {
          let arr = data;
          return arr.find(function (item, index, arr) {
            if (item.people.id == d.uid) {
              return father
            }
          })
        };
        //獲取母親的信息
        var mother = {};
        function getMother(d) {
          var fatherId = getFather(d).rel.father.id;
          let arr = data;
          return arr.find(function (item, index, arr) {
            if (item.rel.husband) {
              if (item.rel.husband.id == fatherId) {
                return mother;
              }
            }
          })
        };
        //alert(mother + '媽媽');
        //alert(father + '爸爸');
        //讀取菜單信息
        var relAliasData = {
  father: '爸爸',
  mother: '媽媽',
  husband: '老公',
  wife: '老婆',
  brother: '兄弟',
  sister: '姐妹',
  son: '兒子',
  daughter: '女兒',
};
        let a = '';
        let obj = relAliasData;
        let newObj = d;
        for (var m in obj) {
          if (!d[m]) {
            a += '新增:' + obj[m]
          }
        }
        alert(a)
      }

你期待的結(jié)果是什么?實(shí)際看到的錯(cuò)誤信息又是什么?

當(dāng)數(shù)據(jù)中已經(jīng)有爸爸、媽媽等值的時(shí)候就不讓循環(huán)數(shù)組中的爸爸、媽媽等輸出顯示出來(lái)

回答
編輯回答
憶往昔

不是特別清楚你的需求,不過(guò)看你表達(dá)的意思猜測(cè)是這樣:
外部有值取外部的,沒(méi)值取默認(rèn)的。

//對(duì)象類型判斷,下面深,淺拷貝用
//深淺拷貝來(lái)源百度,太懶沒(méi)自己寫(xiě)
var util = (function () {

var class2type = {};
["Null", "Undefined", "Number", "Boolean", "String", "Object", "Function", "Array", "RegExp", "Date"].forEach(function (item) {
    class2type["[object " + item + "]"] = item.toLowerCase();
})

function isType(obj, type) {
    return getType(obj) === type;
}

function getType(obj) {
    return class2type[Object.prototype.toString.call(obj)] || "object";
}

return {
    isType: isType,
    getType: getType
}

})();
//對(duì)象深,淺拷貝
function copy(obj, deep) {

if (obj === null || typeof obj !== "object") {
    return obj;
}
var i, target = this.util.isType(obj, "array") ? [] : {}, value, valueType;
for (i in obj) {
    value = obj[i];
    valueType = this.util.getType(value);
    if (deep && (valueType === "array" || valueType === "object")) {
        target[i] = this.copy(value);
    } else {
        target[i] = value;
    }
}
return target;

}

var defaultData = {

  father: '爸爸',
  mother: '媽媽',
  husband: '老公',
  wife: '老婆',
  brother: '兄弟',
  sister: '姐妹',
  son: '兒子',
  daughter: '女兒'
},
out = {
  father: '爸爸22',
  brother: '兄弟223'
},
defaultCopy = copy(defaultData, true); //默認(rèn)數(shù)據(jù)深拷貝一份,免得被污染,影響其它業(yè)務(wù)

for(var key in out) {
defaultCopy[key] = out[key];
}
console.log(defaultCopy);
//得到的defaultCopy里面的數(shù)據(jù)就是你要的

2018年3月12日 16:01