2017-08-24 147 views
-1

如果名稱不存在,嘗試將對象添加到數組。但有dublicates。 例如陣列:[{day:"mo"},{day:"tu"},{day:"st"}].如果名稱不存在,需要將對象添加到數組(js)

如果它不在數組中,則需要添加{day:we}。 所以首先需要檢查{day:we}不在數組中然後添加它。

結果:[{day:"mo"},{day:"tu"},{day:"we"},{day:"st"}].

for (name in result) { 
      if(name !== 'mo') { 
       result.push({day:'mo'}); 
      } 
      if(name !== 'tu') { 
       result.push({day:'tu'}); 
      } 
      if(name !== 'we') { 
       result.push({day:'we'}); 
      } 
      if(name !== 'th') { 
       result.push({day:'th'}); 
      } 
      if(name !== 'fr') { 
       result.push({day:'fr'}); 
      } 
      if(name !== 'sa') { 
       result.push({day:'sa'}); 
      } 
      if(name !== 'su') { 
       result.push({day:'su'}); 
      } 
       break; 
      } 
+0

請加misisng變量及其內容 - 和通緝的結果也是如此。 –

+0

@NinaScholz我想在結果中添加對象數組如果它不存在數組 –

+0

更新,請檢查 –

回答

1

您可以過濾天的數組,並檢查他們是否在結果已經存在:

["mo","tu","we","th","fr","sa","su"] 
    .filter(day => ! result.some(obj => obj.day === day)) 
    .forEach(day => { 
    result.push({day}); 
    }); 

更高性能的版本:

var days = new Set(["mo","tu","we","th","fr","sa","su"]); 

result.forEach(day => days.delete(day.day)); 

days.forEach(day => result.push({day})); 
1

let days = [{day:"mo"},{day:"tu"},{day:"st"}] 
 
let toAdd = ["mo","tu","wed","thu","fri"] 
 

 
toAdd.forEach(day1 => { 
 
\t if(!days.find(day2 => day2===day1)) days.push({day:day1}) 
 
}) 
 

 
console.log(days)

0

var a = [{day:"mo"},{day:"tu"},{day:"st"}]; 
 
    if(a.map(function(obj) { return obj.day; }).indexOf('we') == -1) 
 
     a.push({day:'we'}); 
 
    console.log(a);

1

如果天正確的順序給出你可以檢查和前一天較大數量的插入。

function add(array, insert) { 
 
    var days = { mo: 0, tu: 1, we: 2, th: 3, fr: 4, sa: 5, su: 6 }; 
 

 
    array.some(function (a, i, aa) { 
 
     if (days[a.day] === days[insert.day]) { 
 
      return true; 
 
     } 
 
     if (days[insert.day] < days[a.day]) { 
 
      aa.splice(i, 0, insert); 
 
      return true; 
 
     } 
 
    }) || array.push(insert); 
 
} 
 

 
var array = [{ day: "tu" }, { day: "sa" }]; 
 

 
add(array, { day: "tu" }); // no insert 
 
console.log(array); 
 

 
add(array, { day: "mo" }); // insert at the beginning 
 
console.log(array); 
 

 
add(array, { day: "we" }); // insert in the middle 
 
console.log(array); 
 

 
add(array, { day: "su" }); // insert at the end 
 
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }

相關問題