我试图从数组feature_1
中获取键name
的值data
并将feature_1
设置为另一个数组asset
的键,有一个数组作为值。
示例:
//input:
data: {
name: "feature_1",
value_a: 1,
value_b: 2
}
//Output:
asset: {
feature_1:[1,2]
}
答案 0 :(得分:0)
您可以尝试:
var asset = {};
if ('name' in data) {
var tmp = [];
for (k in data){
if (k != 'name') tmp.push(data[k]);
}
asset[data['name']] = tmp;
}
并且如果您的解释器支持ES6,则可以使用,例如:
let {name, ...v} = data;
let asset = {[name]: Object.values(v)};
答案 1 :(得分:0)
如果在JSON
对象中支持相同的键(似乎不支持),您可以这样做:
let data= {
name: "feature_1",
value_a: 1,
value_b: 2,
value_x: 500,
name: "feature_2",
value_a: 17,
value_b: 21,
value_x: 510
}
console.log(
Object.entries(data).reduce((a,[key,value],index)=>{
if (key==='name')
return {index, assets: {...a.assets, [value]:[]}};
return {
index : a.index,
assets : {
...a.assets,
[Object.entries(a.assets)[a.index][0]] : [...Object.entries(a.assets)[a.index][1],value]
}};
},{index:0,assets:{}}).assets
);
但是我们知道正确的方法是使用分开的数组行。
答案 2 :(得分:-1)
这可以通过以下方式完成:
const obj = {
data: {
name: "feature_1",
value_a: 1,
value_b: 2
}
};
const output = {
assets: {
[obj.data.name]: Object.values(obj.data).filter(el => el !== obj.data.name)
}
}
console.log(output);