Javascript 我有一个对象,我想把对象和给定对象分开

Javascript 我有一个对象,我想把对象和给定对象分开,javascript,Javascript,我有一个对象,我想分离对象。最后一个数字为0的所有键值都有自己的json,对于1,它有自己的json 我想要这个结果 const myjson = { "productname0": "Test1", "price0": "10", "categories0": "61", "type0": "Physical", "availability0": "available", "weight0": "0.5", "productname1": "Test2", "p

我有一个对象,我想分离对象。最后一个数字为0的所有键值都有自己的json,对于1,它有自己的json

我想要这个结果

const myjson = {
  "productname0": "Test1",
  "price0": "10",
  "categories0": "61",
  "type0": "Physical",
  "availability0": "available",
  "weight0": "0.5",
  "productname1": "Test2",
  "price1": "20",
  "categories1": "61",
  "type1": "Physical",
  "availability1": "available",
  "weight1": "0.7",
}
像这样试试

[{
  "productname0": "Test1",
  "price0": "10",
  "categories0": "61",
  "type0": "Physical",
  "availability0": "available",
  "weight0": "0.5",
},
{
  "productname1": "Test2",
  "price1": "20",
  "categories1": "61",
  "type1": "Physical",
  "availability1": "available",
  "weight1": "0.7",
}]
更新:

const myjson = {
  "productname0": "Test1",
  "price0": "10",
  "categories0": "61",
  "type0": "Physical",
  "availability0": "available",
  "weight0": "0.5",
  "productname1": "Test2",
  "price1": "20",
  "categories1": "61",
  "type1": "Physical",
  "availability1": "available",
  "weight1": "0.7",
}

var finalArray=[];
Object.keys(myjson).forEach(function(value){
if(value.endsWith("0")){
    if(!finalArray[0]){
        finalArray[0]={};
    }
    finalArray[0][value]=myjson[value];
} else if(value.endsWith("1")) {
    if(!finalArray[1]){
        finalArray[1]={};
    }
    finalArray[1][value]=myjson[value];
}

});
console.log(finalArray);
像这样试试

[{
  "productname0": "Test1",
  "price0": "10",
  "categories0": "61",
  "type0": "Physical",
  "availability0": "available",
  "weight0": "0.5",
},
{
  "productname1": "Test2",
  "price1": "20",
  "categories1": "61",
  "type1": "Physical",
  "availability1": "available",
  "weight1": "0.7",
}]
更新:

const myjson = {
  "productname0": "Test1",
  "price0": "10",
  "categories0": "61",
  "type0": "Physical",
  "availability0": "available",
  "weight0": "0.5",
  "productname1": "Test2",
  "price1": "20",
  "categories1": "61",
  "type1": "Physical",
  "availability1": "available",
  "weight1": "0.7",
}

var finalArray=[];
Object.keys(myjson).forEach(function(value){
if(value.endsWith("0")){
    if(!finalArray[0]){
        finalArray[0]={};
    }
    finalArray[0][value]=myjson[value];
} else if(value.endsWith("1")) {
    if(!finalArray[1]){
        finalArray[1]={};
    }
    finalArray[1][value]=myjson[value];
}

});
console.log(finalArray);

嘿,如果你想试试,我有一个有效的解决方案:

const myjson = {
  "productname0": "Test1",
  "price0": "10",
  "categories0": "61",
  "type0": "Physical",
  "availability0": "available",
  "weight0": "0.5",
  "productname1": "Test2",
  "price1": "20",
  "categories1": "61",
  "type1": "Physical",
  "availability1": "available",
  "weight1": "0.7",
}

var finalArray=[];
Object.keys(myjson).forEach(function(value){

var lastChar = value[value.length -1];

    if(!finalArray[lastChar]){
        finalArray[lastChar]={};
    }
    finalArray[lastChar][value]=myjson[value];

});
console.log(finalArray);
var数据=[];
对于(var i=0;i<(Object.keys(myjson.length)/6;i++)
{ 
数据推送({
“productname”:myjson[“productname”+i],
“价格”:myjson[“价格”+i],
“类别”:myjson[“类别”+i],
“类型”:myjson[“类型”+i],
“可用性”:myjson[“可用性”+i],
“权重”:myjson[“权重”+i]
}); 
}
控制台日志(数据);

嘿,如果你想试试,我有一个可行的解决方案:

const myjson = {
  "productname0": "Test1",
  "price0": "10",
  "categories0": "61",
  "type0": "Physical",
  "availability0": "available",
  "weight0": "0.5",
  "productname1": "Test2",
  "price1": "20",
  "categories1": "61",
  "type1": "Physical",
  "availability1": "available",
  "weight1": "0.7",
}

var finalArray=[];
Object.keys(myjson).forEach(function(value){

var lastChar = value[value.length -1];

    if(!finalArray[lastChar]){
        finalArray[lastChar]={};
    }
    finalArray[lastChar][value]=myjson[value];

});
console.log(finalArray);
var数据=[];
对于(var i=0;i<(Object.keys(myjson.length)/6;i++)
{ 
数据推送({
“productname”:myjson[“productname”+i],
“价格”:myjson[“价格”+i],
“类别”:myjson[“类别”+i],
“类型”:myjson[“类型”+i],
“可用性”:myjson[“可用性”+i],
“权重”:myjson[“权重”+i]
}); 
}
控制台日志(数据);

假设您有以下输入:

var Data = [];
for (var i = 0; i < (Object.keys(myjson).length) / 6; i++) 
{ 

Data.push({ 
"productname": myjson["productname" + i], 
"price": myjson["price" + i], 
"categories": myjson["categories" + i],
 "type": myjson["type" + i], 
"availability": myjson["availability" + i], 
"weight": myjson["weight" + i] 
}); 

}
console.log(Data);
您希望根据关键点上的最后一个字符分隔属性

因此,您创建了一个包含结果的数组,并使用
Object.keys

对于每个键,请分隔最后一个字符,因为这将是结果索引。还要检查结果数组是否已在该索引处包含对象,如果不包含,则创建一个空对象

那么你有这个:

const myJSON = {
  "productname0": "Test1",
  "price0": "10",
  "categories0": "61",
  "type0": "Physical",
  "availability0": "available",
  "weight0": "0.5",
  "productname1": "Test2",
  "price1": "20",
  "categories1": "61",
  "type1": "Physical",
  "availability1": "available",
  "weight1": "0.7",
}

此解决方案适用于任何输入对象,因为键/属性的名称末尾有索引。

假设您有以下输入:

var Data = [];
for (var i = 0; i < (Object.keys(myjson).length) / 6; i++) 
{ 

Data.push({ 
"productname": myjson["productname" + i], 
"price": myjson["price" + i], 
"categories": myjson["categories" + i],
 "type": myjson["type" + i], 
"availability": myjson["availability" + i], 
"weight": myjson["weight" + i] 
}); 

}
console.log(Data);
您希望根据关键点上的最后一个字符分隔属性

因此,您创建了一个包含结果的数组,并使用
Object.keys

对于每个键,请分隔最后一个字符,因为这将是结果索引。还要检查结果数组是否已在该索引处包含对象,如果不包含,则创建一个空对象

那么你有这个:

const myJSON = {
  "productname0": "Test1",
  "price0": "10",
  "categories0": "61",
  "type0": "Physical",
  "availability0": "available",
  "weight0": "0.5",
  "productname1": "Test2",
  "price1": "20",
  "categories1": "61",
  "type1": "Physical",
  "availability1": "available",
  "weight1": "0.7",
}

此解决方案适用于任何输入对象,前提是键/属性的名称末尾有索引。

您可以使用
reduce
函数,如下所示:

const result = [];

Object.keys(myJSON).forEach(key => {
    if (result[key[key.length-1]] === undefined) {
        result[key[key.length-1]] = {};
    }
    result[key[key.length-1]][key] = myJSON[key];
})
const parameterNames=['productname'、'price'、'categories'、'type'、'availability'、'weight'];
const data=Object.keys(myjson).reduce((acc,key)=>{
让parameterName=null;
for(设i=0;i-1){
参数名称=参数名称[i];
打破
}
}
if(参数名称){
让index=key.split(parameterName)[1];
if(acc[索引]==未定义){
acc[索引]={};
}
acc[index][parameterName]=myjson[key];
}    
返回acc;
}, []);

您可以使用
reduce
功能,如下所示:

const result = [];

Object.keys(myJSON).forEach(key => {
    if (result[key[key.length-1]] === undefined) {
        result[key[key.length-1]] = {};
    }
    result[key[key.length-1]][key] = myJSON[key];
})
const parameterNames=['productname'、'price'、'categories'、'type'、'availability'、'weight'];
const data=Object.keys(myjson).reduce((acc,key)=>{
让parameterName=null;
for(设i=0;i-1){
参数名称=参数名称[i];
打破
}
}
if(参数名称){
让index=key.split(parameterName)[1];
if(acc[索引]==未定义){
acc[索引]={};
}
acc[index][parameterName]=myjson[key];
}    
返回acc;
}, []);


这不是JSON。请阅读:是否要根据最后一个数字将对象拆分为数组(对象列表)?到目前为止您尝试了什么?是否要根据最后一个数字将对象拆分为数组(对象列表)?–是您所说的结果是无效语法。那里应该有一个数组吗?那不是JSON。请阅读:是否要根据最后一个数字将对象拆分为数组(对象列表)?到目前为止您尝试了什么?是否要根据最后一个数字将对象拆分为数组(对象列表)?–是您所说的结果是无效语法。那里应该有一个数组吗?对于每一个新的数组,你必须添加逻辑!这不是固定的吗?检查我的更新答案,无论如何,你必须使用小逻辑来指示正确的位置如果你确定最后一个字符将始终是整数,那么你可以尝试我的更新解决方案!我不认为你可以假设索引将小于10,也就是说,每增加一个新的字符,你必须添加逻辑!这不是固定的吗?检查我的更新答案,无论如何,你必须使用小逻辑来指示正确的位置如果你确定最后一个字符将始终是整数,那么你可以尝试我的更新解决方案!我不认为你可以假设索引会少于10,也就是说,结尾只有一个字符