【问题标题】:Grouping string array based on object length [closed]根据对象长度对字符串数组进行分组
【发布时间】:2020-04-12 05:30:56
【问题描述】:
var list=['abc','ab','a','c','bc','abcdef','cdf','opq']

output:-
   var object={    
            ['a','c'],
            ['ab','bc'],
            ['abc','cdf','opq'],
            ['abdcef']}

【问题讨论】:

标签: javascript ecmascript-6 ecmascript-5


【解决方案1】:

试试这个:

  let list = ['abc', 'ab', 'a', 'c', 'bc', 'abcdef', 'cdf', 'opq'];
  let temp = {};
  list.map(function (item) {
       !temp.hasOwnProperty(item.length) ? temp[item.length] = [item] : temp[item.length].push(item);
  });
  let output_dict = {'output': Object.values(temp)};
  console.log(output_dict)

【讨论】:

    【解决方案2】:

    预期的输出不正确。对象无法按照所需对象中所示存储数据。您可以拥有数组数组或具有键值对的对象。

    在下面的示例中,使用数组 reduce 方法,并在回调内部检查当前对象的长度并创建一个键,如 len1,len2,len3 其中1,2,3 .. 是当前值的长度。如果累加器对象包含按名称命名的键,例如 len1len2 等等,则将当前值推送到与该键相关的数组中。否则使用该名称创建一个新键并添加值

    var list = ['abc', 'ab', 'a', 'c', 'bc', 'abcdef', 'cdf', 'opq']
    
    let len = 'length';
    let lengthObj = list.reduce((acc, curr) => {
      const lengthKey = `len${curr.length}`
      if (acc[lengthKey]) {
        acc[lengthKey].push(curr)
      } else {
        acc[lengthKey] = [curr];
    
      }
    
      return acc;
    }, {});
    console.log(Object.values(lengthObj))

    【讨论】:

      猜你喜欢
      • 2013-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-23
      • 1970-01-01
      • 2010-12-15
      • 2017-03-07
      • 1970-01-01
      相关资源
      最近更新 更多