我有一个对象,其中包含一个键和一个包含一些值的数组。
var obj1 = {
'key': '1',
'values': ['a', 'b', 'c']
}
var obj2 = {
'key': '10',
'values': ['a', 'b']
}
我想在我的values
数组中的每个值的其他对象中将其拆分为以下结果:
obj1 = 'key': '1', 'value':'a', 'index': '0';
obj2 = 'key': '1', 'value':'b', 'index': '1';
obj3 = 'key': '1', 'value':'c', 'index': '2';
obj4 = 'key': '10', 'value': 'a', 'index': '0';
obj5 = 'key': '10', 'value': 'b', 'index': '1';
有任何想法吗?
答案 0 :(得分:1)
试试这个例子
var brief = function(obj) {
var tmp = [],
i = 0,
l = obj.values.length;
while (i < l)
tmp.push({
key: obj.key,
index: i,
value: obj.values[i++]
});
return tmp;
};
var obj1 = brief({
key: '1',
values: ['a', 'b', 'c']
});
var obj2 = brief({
key: '2',
values: ['a', 'c']
});
document.write("<pre>");
document.write(JSON.stringify(obj1));
document.write("<br/>");
document.write(JSON.stringify(obj2));
document.write("</pre>");
答案 1 :(得分:1)
朋友,它会是这样的:
tmp = [];
obj1.values.forEach(function (e, i) {
tmp.push({key: obj1.key, value: e, index: i})
});
console.log(tmp);
答案 2 :(得分:0)
假设你想要
obj1 =[ { key: '1', value:'a', index: '0' },
{ key: '1', value:'b', index: '1'},
{ key: '1', value:'c', index: '2' }]
试
function splitArray( obj )
{
var output = [];
var keyValue = obj.key;
var values = obj.values;
for ( var counter = 0; counter < values.length; counter++ )
{
output.push( {
key : keyValue,
value : values[ counter ],
index : counter
} );
}
return output;
}
console.log( splitArray( obj1 ) );
答案 3 :(得分:0)
function getTransformedObjects(obj) {
var ans = [];
if (obj.values) {
obj.values.forEach(function(value, index) {
var temp = {
'key': obj.key,
'value': value,
'index': index
};
ans.push(temp);
})
}
return ans;
}
//for display purpose
// usage
var obj1 = {
key: '1',
values: ['a', 'b', 'c']
}
console.log(getTransformedObjects(obj1));
$('.old').html(JSON.stringify(obj1))
$('.new').html(JSON.stringify(getTransformedObjects(obj1)));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div>old object</div>
<div class='old'></div>
<div>Trasnformed object</div>
<div class='new'></div>
调用传递旧对象的函数作为参数,并获取所需格式的对象数组。