Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在JSON对象中组合多个键值?_Javascript_Jquery_Json - Fatal编程技术网

Javascript 如何在JSON对象中组合多个键值?

Javascript 如何在JSON对象中组合多个键值?,javascript,jquery,json,Javascript,Jquery,Json,我有一个示例JSON对象 var sample = [{ "label": "one", "value": 1 }, { "label": "two", "value": 2 }, { "label": "three", "value": 3 }, { "label": "four", "value": 4 }, { "label": "five", "value": 5 }]; 我想把它改成这样 var samp

我有一个示例JSON对象

var sample = [{
    "label": "one",
    "value": 1
}, {
    "label": "two",
    "value": 2
}, {
    "label": "three",
    "value": 3
}, {
    "label": "four",
    "value": 4
}, {
    "label": "five",
    "value": 5
}];
我想把它改成这样

var sample = [{
    "label": "one",
    "value": 1,
    "newKeyValue": "one|1"
}, {
    "label": "two",
    "value": 2,
    "newKeyValue": "two|2"
}, {
    "label": "three",
    "value": 3,
    "newKeyValue": "three|3"
},
...
];
它应该组合这两个键值,并返回组合这两个键值的新键值


JSON是动态的,键标签和值不是静态的,它可以是任何东西。例如
[{“name”:“srinivas”,“lastname”:“pai”}]

您可以像这样使用地图:

编辑

对于处理通用密钥,您可以使用
Object.keys(d)[0]
用于第一个键
Object.keys(d)[1]
第二个键

var样本=[
{
“标签”:“一个”,
“价值”:1
},
{
“标签”:“两个”,
“价值”:2
},
{
"标签":"三",,
“价值”:3
},
{ 
“标签”:“四个”,
“价值”:4
},
{ 
“标签”:“五”,
“价值”:5
}
];
var data=sample.map(函数(d){
返回{label:Object.keys(d)[0],value:Object.keys(d)[1],newKeyValue:Object.keys(d)[0]+“|”+Object.keys(d)[1]}
}) 
console.log(数据)
您可以使用,和

在ES6中,您可以使用

var样本=[{
“标签”:“一个”,
“价值”:1
}, {
“姓名”:“两个”,
“年龄”:2
}, {
"五":"三",,
“六”:3
}, {
“公司”:“四家”,
“组织”:4
}, {
“标签”:“五”,
“价值”:5
}];
sample=sample.map(函数(x){
var keys=Object.keys(x);
x、 newKeyValue=keys.map(key=>x[key]).join(“|”);
返回x;
});
控制台日志(示例);

document.body.innerHTML=''+JSON.stringify(示例,0,4)+''如果使用更多元素,则使用

var sample = [{"name":"srinivas","lastname":"pai"}];    

sample.map(function(item) {
  item.newKeyValue = Object.getOwnPropertyNames(item).map(function(d) {return item[d];}).join("|");
})

    console.log(sample);
var样本=[
{
“标签”:“一个”,
“价值”:1
},
{
“标签”:“两个”,
“价值”:2
},
{
"标签":"三",,
“价值”:3
},
{ 
“标签”:“四个”,
“价值”:4
},
{ 
“标签”:“五”,
“价值”:5
}
];
$(示例)。每个(功能(i,项){
var keyes=对象。键(项);
sample[i]=$.extend(item,{newKeyValue:item[keyes[0]]+“|”+item[keyes[1]});
});
console.log(示例)
您可以用于原位更改

forEach()
方法对每个数组元素执行一次提供的函数

编辑:使用动态键,存储在数组中,因为顺序不同

var-sample=[{“label”:“一”,“值”:1},{“label”:“二”,“值”:2},{“label”:“三”,“值”:3},{“label”:“四”,“值”:4},{“label”:“五”,“值”:5}];
sample.forEach(函数(a){
a、 newKeyValue=['label','value'].map(函数(k){返回[k];}).join('|');
});
document.write(''+JSON.stringify(示例,0,4)+'')
var样本=[
{
“标签”:“一个”,
“价值”:1
},
{
“标签”:“两个”,
“价值”:2,
“可选价值”:2
},
{
"标签":"三",,
“价值”:3,
“备注”:“自由文本”
},
{ 
“标签”:“四个”,
“价值”:4
},
{ 
“标签”:“五”,
“价值”:5
}
];
for(示例中的var键){
var newValue=[];
对于(样本中的var件[键]){
newValue.push(样本[键][件])
}
示例[key][“newKeyValue”]=newValue.join(“|”);
}
$('pre').html(JSON.stringify(sample,null,4))


通过
$进行尝试。扩展(targetSample,Sample)
@Tushar不,没有尝试过。我尝试过只使用for循环一个值,我可以添加@Tushart。你发布问题的方式似乎有点混乱。我建议补充一点,实际的钥匙不是静态的,但有时可能会有所不同,正如您在一些评论中所做的那样。您如何保持钥匙的顺序?感谢您的快速回复。json是动态的,键标签和值不是静态的,它可以是任何东西。例如[{“name”:“srinivas”,“lastname”:“pai”}]检查编辑部分,您可以像这样进行操作,toothank you@tushar json是动态的,键标签和值不是静态的,它可以是任何东西。例如[{“name”:“srinivas”,“lastname”:“pai”}]@SrinivasPai您可以在questino@SrinivasPai我已经更新了答案,使关键动态。请再查一下。还要注意的是,如果对象包含多个键,它将使用
|
作为分隔符将它们连接起来。一行
sample=sample.map(obj=>object.assign(obj,{newKeyValue:object.keys(obj.map)(key=>obj[key])。连接('|')json动态出现,键标签和值不是静态的,它可以是任何东西。例如[{“name”:“srinivas”,“lastname”:“pai”}]
var sample = [{"name":"srinivas","lastname":"pai"}];    

sample.map(function(item) {
  item.newKeyValue = Object.getOwnPropertyNames(item).map(function(d) {return item[d];}).join("|");
})

    console.log(sample);