我正在进行下一个js项目,我将以下输入对象数组设置为filesize useState.在这里,键可以被视为文件列表的索引,其值是该特定文件的大小

input file Object Array:    
   {
      0: 39768
      1: 13264
      2: 69432
      3: 4567
      4: 789
    }
output file Object Array:
    {
      0: 39768
      1: 13264
      2: 4567 
      3: 789
    }

到目前为止,我已经try 过这种方式

const [fileSize,setFileSize] = useState({});

//Here I set the input files array to setFileSize usestate and this is working fine

setFileSize(fileSize => ({
            ...fileSize,
            [num]: f.size,
          }))

现在我需要将文件被删除的索引中的值上移.这意味着上述输出数组应设置为fileSize useState.

    var length = Object.keys(fileSize).length;

    setFileSize(fileSize => {
      return Object.entries(fileSize).map(([key, value]) => {
           if(key>index && key<length-1){
             return {[parseInt(key)-1]: value}
           }
      })
  });
    

我需要你的帮助将文件大小状态从输入数组更改为输出array.任何帮助都将不胜感激

推荐答案

您可以先从fileSize中的Object.entries()得到Array.prototype.filter(),最后从Array.prototype.reduce()得到带有数组索引的对象,作 for each 值的键

代码:

const index = 1
const fileSize = { 0: 39768, 1: 13264, 2: 4567, 3: 789 }

const result = Object
  .entries(fileSize)
  .filter(([k]) => +k !== index)
  .reduce((a, [, v], i) => (a[i] = v, a), {})

console.log(result)

Javascript相关问答推荐

使用AJX发送表单后,$_Post看起来为空

如何最好地从TypScript中的enum获取值

拖放仅通过 Select 上传

手机上的渲染错误文本必须在文本组件中渲染,但在浏览器上没有问题<><>

为什么按钮会随浮动属性一起移动?

在带有背景图像和圆形的div中添加长方体阴影时的重影线

无法使用单击按钮时的useState将数据从一个页面传递到另一个页面

本地库中的chartjs-4.4.2和chartjs-plugin-注解

如何在Node.js中排除导出的JS文件

覆盖加载器页面避免对页面上的元素进行操作

是否可以将异步调用与useState(UnctionName)一起使用

在GraphQL解析器中修改上下文值

JavaScript将字符串数字转换为整数

为什么在运行于<;img>;事件处理程序中的JavaScript中x和y是不可变的?

我的NavLink活动类在REACT-ROUTER-V6中出现问题

在Press Reaction本机和EXPO av上播放单个文件

需要刷新以查看Mern堆栈应用程序中的更改

Refine.dev从不同的表取多条记录

Node.js的Fetch()调用总是创建新的Express会话

使用JavaScript或PHP从div ID值创建锚标记和链接