首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于元素内容的拆分数组?

基于元素内容的拆分数组?
EN

Stack Overflow用户
提问于 2022-03-31 12:03:32
回答 5查看 85关注 0票数 1

假设我的元素是这样的:

代码语言:javascript
复制
const words = [
 'duck foo bar',
 'duck',
 'duck bing ',
 'bing',
 'Bloop#12 goose',
 'duck 12',
 'duck goose',
  ...
]

我想要的是把它分割成块,其中‘鹅’是块中的最后一个元素:

代码语言:javascript
复制
const words = [
 [
   'duck foo bar',
   'duck',
   'duck bing',
   'bing',
   'Bloop#12 goose',
 ], 
 [
   'duck 12',
   'duck goose',
 ], 
 [
  ...
 ],
];

一个‘鹅’前面有多少个元素是没有规律性的,每个元素中也没有其他元素,除了1)鹅总是一个元素的最后一部分,2)除了一个我想要结束的元素之外,鹅从来没有出现在任何其他元素中(也就是说,我从来没有得到‘鹅福’,但我可能会得到‘鹅’)

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2022-03-31 15:18:20

您可以减少数组,查看前面的字符串,并将数组添加到新组的结果集中。

代码语言:javascript
复制
const
    words = ['duck foo bar', 'duck', 'duck bing ', 'bing', 'Bloop#12 goose', 'duck 12', 'duck goose'],
    separator = 'goose',
    groups = words.reduce((r, s, i, a) => {
        if (!i || a[i - 1].includes(separator)) r.push([]);
        r[r.length - 1].push(s);
        return r;
    }, []);

console.log(groups);
代码语言:javascript
复制
.as-console-wrapper { max-height: 100% !important; top: 0; }

票数 1
EN

Stack Overflow用户

发布于 2022-03-31 12:12:38

尝尝这个。这应该能做你想要的。

代码语言:javascript
复制
const words = [
 'duck foo bar',
 'duck',
 'duck bing ',
 'bing',
 'Bloop#12 goose',
 'duck 12',
 'duck goose'
]

const answer = []
let temp = []
for(let i = 0; i < words.length; i++){
  if(words[i].includes('goose')){
    temp.push(words[i])
    answer.push(temp)
    temp = []
  } else{
    temp.push(words[i])
  }
}

console.log(answer)

票数 1
EN

Stack Overflow用户

发布于 2022-03-31 12:11:35

您可以通过一个简单的forEach循环来实现这一点。在下面的示例中,我首先暂时存储这些值。

然后,如果单词包含goose,则将块推入新数组中。

代码语言:javascript
复制
const words = [
 'duck foo bar',
 'duck',
 'duck bing ',
 'bing',
 'Bloop#12 goose',
 'duck 12',
 'duck goose',
 'abc'
]

const n = []
let tmp = [];
words.forEach((w) => {
  if (! w.includes('goose')) {
    tmp.push(w);
  } else {
    tmp.push(w);
    n.push(tmp);
    tmp = [];
  } 
  
});

console.log(n)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71692138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档