Reactjs 从数组中生成键值对字符串

Reactjs 从数组中生成键值对字符串,reactjs,react-native,react-native-android,Reactjs,React Native,React Native Android,我有以下数组(foodDetailsList) 其中,我希望创建以下变量字符串作为输出: 'food[0][food_id]': '5', 'food[0][quantity]': '100', 'food[0][quantity_unit]': 'gm', 'food[1][food_id]': '45', 'food[1][quantity]': '200', 'food[1][quantity_unit]': 'gm', 'food[2][food_id]': '45', 'food[2]

我有以下数组(foodDetailsList)

其中,我希望创建以下变量字符串作为输出:

'food[0][food_id]': '5',
'food[0][quantity]': '100',
'food[0][quantity_unit]': 'gm',
'food[1][food_id]': '45',
'food[1][quantity]': '200',
'food[1][quantity_unit]': 'gm',
'food[2][food_id]': '45',
'food[2][quantity]': '200',
'food[2][quantity_unit]': 'gm'
我想尝试以下方法:

const createString = ()=>{
    let finalFoodList =[];
    foodDetailsList.map((food,key) =>{
              finalFoodList.push({
            'food['+[key]+'][food_id]'`:food.id,
            'food['+[key]+'][quantity]'`:food.quantity
              });
            });
    console.log("final variable is : ",finalFoodList.toString);
}
需要对上述代码进行语法改进,以便接收上述输出。

您可以在对象的
arr
上使用。对于每个对象,您可以使用它来获取
食品id
数量
数量单位
属性。基于此,您可以使用
.map()
回调中提供的索引
i
作为字符串中食品的索引,以所需格式返回字符串。获得字符串数组后,可以使用连接每个字符串

见下例:

const arr=[{“食品id”:5,“数量”:100,“数量单位”:“gm”},
{“食品id”:45,“数量”:200,“数量单位”:“转基因”},
{“食品标识”:22,“数量”:300,“数量单位”:“转基因”};
const res=arr.map({food_id,quantity,quantity_unit},i)=>
`‘食物‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘’`
).join('\n');

控制台日志(res)
您可以使用
map
函数在原始数组上迭代,然后使用
Object.keys
获取包含的食物对象的所有键,并映射到这些键上,以获得如下通用解决方案:

const foodList=[
{“食品id”:5,“数量”:100,“数量单位”:“转基因”},
{“食品id”:45,“数量”:200,“数量单位”:“转基因”},
{“食品标识”:22,“数量”:300,“数量单位”:“转基因”}]
const foodString=foodList.map((食物,索引)=>
Object.keys(food).map(key=>`food[${index}][${key}]':'${food[key]}`)。join('\n')
).join('\n');
console.log(foodString)请尝试以下操作:

const foodList = [
    {"food_id": 5, "quantity": 100, "quantity_unit": gm}, 
    {"food_id": 45, "quantity": 200, "quantity_unit": gm}, 
    {"food_id": 22, "quantity": 300, "quantity_unit": gm}
];

const createString = () => {
    const foodLen = foodList.length;
    let finalFoodList = foodList.map((food, index) => {
        return index !== foodLen ? (
            `'food[${index}][food_id]': '${food.food_id}',\n
            'food[${index}][quantity]': '${food.quanatity}',\n
            'food[${index}][quantity_unit]': '${food.quantity_unit}',\n`
        ) : (
             `'food[${index}][food_id]': '${food.food_id}',\n
            'food[${index}][quantity]': '${foof.quanatity}',\n
            'food[${index}][quantity_unit]': '${food.quantity_unit}'
        );
    });
}
  • 获取foodList数组的长度
  • 映射函数创建新数组
  • map函数中的第二个参数给出当前迭代次数
  • 我们使用三元运算符返回条件输出

  • 你想要的输出是一个对象吗?我希望输出像上面提到的一样是一个字符串,如何创建它的hashmap而不是String?你是说Map对象吗?或者JavaScript中的哈希映射到底是什么?我这样问是因为它不是JS中的本机类型。
    const foodList = [
        {"food_id": 5, "quantity": 100, "quantity_unit": gm}, 
        {"food_id": 45, "quantity": 200, "quantity_unit": gm}, 
        {"food_id": 22, "quantity": 300, "quantity_unit": gm}
    ];
    
    const createString = () => {
        const foodLen = foodList.length;
        let finalFoodList = foodList.map((food, index) => {
            return index !== foodLen ? (
                `'food[${index}][food_id]': '${food.food_id}',\n
                'food[${index}][quantity]': '${food.quanatity}',\n
                'food[${index}][quantity_unit]': '${food.quantity_unit}',\n`
            ) : (
                 `'food[${index}][food_id]': '${food.food_id}',\n
                'food[${index}][quantity]': '${foof.quanatity}',\n
                'food[${index}][quantity_unit]': '${food.quantity_unit}'
            );
        });
    }