JavaScript从数组中的字符串获取前两个单词

问题描述

我是JavaScript的新手,所以我甚至很难知道从哪里开始。请有人帮我。 我有这一系列的配料:

const ingris =  [
  "1 cup heavy cream","8 ounces paprika","1 Chopped Tomato","1/2 Cup yogurt","1 packet pasta ","1/2 teaspoon freshly ground black pepper,divided",]

例如,我尝试取出1 cup1/2 teaspoon(数组的前2个单词)并将其添加到新的对象数组中,如下所示:

const ShoppingList = [
  {
    val: "heavy cream",amount: "1 cup",},{
    val: "Tomato",amount: "1 Chopped ",{
    val: "yogurt",amount: "1/2 Cup",];

解决方法

大概我会尝试使用.map()首先遍历字符串数组并将其转换为新的对象数组。在每次迭代中,您都可以.split()按空格分隔字符串,并且数组的前2个元素很可能是amount属性,其余是值。

请参阅文档:

map()方法创建一个新数组,其中填充了在调用数组中每个元素上调用提供的函数的结果。

split()方法将String分成子字符串的有序列表,然后将这些子字符串放入数组中,然后返回该数组。通过搜索模式来完成划分;在该模式的调用中,将模式作为第一个参数提供。

尝试以下操作:

const ingris = [
  "1 cup heavy cream","8 ounces paprika","1 Chopped Tomato","1/2 Cup yogurt","1 packet pasta","1/2 teaspoon freshly ground black pepper,divided",];

const result = ingris.map(e => {
  const split = e.split(' ');
  const amount = `${split[0]} ${split[1]}`;
  
  return { val: e.replace(`${amount} `,''),amount };
});

console.log(result);

一旦输入字符串的格式不同,可能需要添加后备,例如检查该字符串中是否至少有3个单词。

,

使用Array#map将给定数组映射到新数组。 Split空格处的字符串。返回一个新对象,前两个数组元素为val,其他元素为数量。为了获取最后一个元素,请使用Array#sliceArray#join,并用空格作为胶水将它们连接到字符串。

const ingris =  [
  "1 cup heavy cream","1 packet pasta ",];

let result = ingris.map(str => {
    let arr = str.split(' ');
    return {val: arr[0] + ' ' + arr[1],amount: arr.slice(2).join(' ')};
});

console.log(result);

,

有多种方法,但是使用Array.prototype.map遍历数组,String.prototype.split将每个字符串转换成循环内的数组,Array.prototype.slice()从数组中获取切片将有帮助您创建所需的内容。但是请记住,它当前总是会得到前两个单词,之后是两个单词。因此您的原料每次都必须使用相同的方式

const ingris =  [
  "1 cup heavy cream",];

const shoppingList = ingris.map(ingredient => {
  const splitIngredient = ingredient.split(' ');
  const amount = splitIngredient.slice(0,2).join(' ');
  const val = splitIngredient.slice(2,splitIngredient.length).join(' ');
  return { val,amount };
});

console.log(shoppingList);