1

我正在尝试通过使用来修改对象的值.fromEntries()。正如您在下图中看到的,我实际上是在返回一个修改后的小时数组,但是在函数结束后,它返回完整的数组,而不是更新的数组。

提前感谢您的任何想法!

在此处输入图像描述


    let filteredDates = Object.fromEntries(Object.entries(slots).filter(([slot, value]) => {
        let result = datesArray.some(filterdates => {
            return filterdates.some(filter => slot === filter)
        })
        let currentDay = slot === day ? value.filter(time => time >= currentHour) : null
        result = currentDay ? currentDay : result ? value : result
        console.log("result",result)
        return result
    }))
    
    console.log("filteredDates",filteredDates)
4

1 回答 1

3

我认为最接近您当前方法的解决方案是map首先返回null要删除的条目,然后filter取出null条目以防止Object.fromEntries抛出。在代码中:

const myObj = { "a": 1, "b": 2, "c": 3 };

// Your modification
const doubleWithoutB = ([ key, value ]) => 
  key === "b"            // This is your filter logic
    ? null
    : [ key, value * 2 ] // Here's your map operation
    

console.log(
  Object.fromEntries(
    Object
      .entries(myObj)
      .map(doubleWithoutB)
      .filter(kvp => kvp !== null) // Get rid of the null kvps
  )
)

如果您想一次性完成,您可以自己跳过Object.fromEntries并将reduce条目添加到对象中:

const myObj = { "a": 1, "b": 2, "c": 3 };

// Your modification
const reduceDoubleWithoutB = (acc, [ key, value ]) => 
  Object.assign(
    acc,
    key === "b" 
      ? {}
      : { [key]: value * 2 }
  )
    

console.log(
  Object
    .entries(myObj)
    .reduce(reduceDoubleWithoutB, {})
)

于 2020-11-17T13:26:38.167 回答