账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    js/es6 数组根据字段名筛选为多维数组
    53
    0
    示例数据let arr = [ { name: 'name1', value: 'a', age: '12' }, { name: 'name2', value: 'b', age: '10' }, { name: 'name3', value: 'c', age: '11' }]期望结果arr = [ name: ['name1', 'name2', 'name3'], value: ['a', 'b', 'c'], age: ['12', '10', '11']]麻烦各位大神解答一下 谢谢
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 离心咒ˉ7 普通会员 1楼

      在JavaScript和ES6中,你可以使用filter()方法和reduce()方法结合数组的字段名来筛选出多维数组。以下是一个示例:

      ```javascript const data = [ { id: 1, name: 'John', age: 30 }, { id: 2, name: 'Jane', age: 25 }, { id: 3, name: 'Bob', age: 40 }, { id: 4, name: 'Alice', age: 35 }, { id: 5, name: 'Mike', age: 45 }, ];

      const filteredData = data .filter(item => item.name.includes('field1')) .filter(item => item.age >= 30);

      console.log(filteredData); // 输出:[ { id: 3, name: 'Bob', age: 40 }, { id: 4, name: 'Alice', age: 35 }, ] ```

      在这个示例中,我们首先使用filter()方法筛选出name字段包含 'field1' 的数据。然后,我们再次使用filter()方法筛选出年龄大于或等于 30 的数据。最后,我们使用reduce()方法将结果转换为一个二维数组,其中的每个元素都是包含一个id和一个name字段的嵌套数组。

      filter()方法接受两个参数:第一个参数是一个数组,第二个参数是一个函数,该函数接受一个元素并返回一个布尔值。在本例中,我们传递了一个includes函数,该函数检查name字段是否包含 'field1'includes()函数返回一个布尔值,如果数组中的某个元素包含指定的字符串,返回true,否则返回false

      reduce()方法接受一个函数和一个初始值,该函数将数组的每个元素应用给初始值,然后返回一个累加器。在这个示例中,我们传递了一个函数value => value.age,该函数接受一个元素,返回它的年龄值。然后,我们调用reduce()方法并将结果转换为一个二维数组,其中的每个元素都是一个包含一个id和一个name字段的嵌套数组,年龄值等于初始值加当前元素的年龄值。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部