Возвращать массив из одного элемента или пустой массив лучшая практика в JavaScript

#javascript #ecmascript-6

#javascript #ecmascript-6

Вопрос:

Есть ли лучший способ реализовать это?

 const a = _.get(obj, 'property');
const b = a ? [a] : [];
 

obj является объектом, может иметь или не иметь property . Если это произойдет, верните массив из одного элемента property , иначе верните пустой массив.

Ответ №1:

 const obj = {
  prop: "hello"
}

const b = obj.hasOwnProperty("prop") ? [obj.prop] : [];
 

Ответ №2:

 let obj = {}
console.log("when property is not present: ", obj["property"] || [])

obj = {property: ["hello"]}

console.log("when property is present: ", obj["property"] || []) 

Комментарии:

1. Я не думаю, что это правильно, потому что, если свойство существует, им нужен массив, содержащий это свойство , а не только само свойство. В вашем ответе они получат только свойство.

2. пожалуйста, не стесняйтесь вносить изменения в этот ответ или публиковать свою версию ответа 🙂

Ответ №3:

Вы можете обернуть его в массив с фильтром ненулевого значения

 const a = _.get(obj, 'property');
const b = [a].filter(Boolean);
 
 const a1 = null
const a2 = 1

const res1 = [a1].filter(Boolean)
const res2 = [a2].filter(Boolean)

console.log(res1)
console.log(res2)