简体   繁体   English

JavaScript:根据 object 属性中的空间拆分数组中的对象

[英]JavaScript: Split objects in array based on space in object property

In JavaScript, let's say I have an array like this:在 JavaScript 中,假设我有一个这样的数组:

[{display:"Foo"},{display:"Bar", field: {"Baz"}},{display:{"Baz Foo"}},{display: "Foo Bar", field: "Bar"}]

and want to convert it into this:并想将其转换为:

[{display:"Foo"},{display:"Bar", field: {"Baz"}},{display:{"Baz"}},{display:{"Foo"}},{display: "Foo", field: "Bar"},{display: "Bar", field: "Bar"}] . [{display:"Foo"},{display:"Bar", field: {"Baz"}},{display:{"Baz"}},{display:{"Foo"}},{display: "Foo", field: "Bar"},{display: "Bar", field: "Bar"}]

In other words, split the objects that contain space in the display field into two objects and keep the field property as it is.也就是说,将显示字段中包含空间的对象拆分为两个对象,并保持字段属性不变。

I feel like it should be some simple solution to this, but I just don't get it right.我觉得这应该是一些简单的解决方案,但我就是不正确。 Does anyone know how I can achieve this?有谁知道我怎么能做到这一点?

try this尝试这个

const arr = [{display:"Foo"},{display:"Bar", field: "Baz"},{display:"Baz Foo"},{display: "Foo Bar", field: "Bar"}]

const newArr = arr.reduce((acc, cur) => {
  const { field, display } = cur
  const newObjs = display.split(" ").map(dis => ({ display: dis, field }));
  acc = acc.concat(newObjs)
  return acc
}, [])

This works:这有效:

 const input = [ {display:"Foo"}, {display:"Bar", field: "Baz"}, {display:"Baz Foo"}, {display:"Foo Bar", field: "Bar"} ] const output = input.map((entry) => entry.display.split(/\s+/g). map((part) => ({...entry, display: part})) ).flat() console.log(output)

Note that split(/\s+/g) splits at one or more white-spaces, eg "hello world" results in ["hello", "world"] .请注意split(/\s+/g)在一个或多个空格处拆分,例如"hello world"会导致["hello", "world"] If you do not want this, change to split(" ") , the result would then be ["hello", "", "", "", "world"]如果您不希望这样,请更改为split(" ") ,结果将是["hello", "", "", "", "world"]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 根据JavaScript中的条件将对象拆分为对象数组 - Split an object into array of objects based on a condition in JavaScript 根据属性拆分数组中的对象 - Split objects in array, based on the property 根据属性将 javascript 中的对象数组拆分为单独的 arrays - split array of objects in javascript into separate arrays based on a property 如何根据 object 属性(即数组)对对象数组进行排序 Javascript - How to sort array of objects based on object property (which is Array) Javascript 根据属性将一个对象拆分为多个对象 - split one object into multiple objects based on the property 根据 88222995402888 属性值从 javascript 对象数组中删除重复项 - Remove duplicates from javascript objects array based on object property value 根据 Javascript 中的属性值从数组的 object 中获取唯一对象 - Getting unique objects from object of array based on property value in Javascript 根据相似的值将对象拆分为对象数组 - Split an object in to array of objects based on similar values 通过基于javascript中每个对象的属性值对对象数组进行分组来创建新的对象数组 - Create new array of objects by grouping array of objects based on property value of each object in javascript 基于 object 数组属性减少对象数组 - Reduce an array of objects based on an object array property
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM