у меня есть массив объектов, которые нужно преобразовать в новый массив с новым свойством, используя другой список строк, чтобы прочитать свойство в javascript.
переменная выход =
[
{Id: '000000CayeAAC', Name: 'KCP13', FTA: 'LOS', FTN: 'M'}
{Id: '000000CayLAAS', Name: 'KCN15', FTA: 'DC', FTN: 'M'}
{Id: '000000CaxXAAS', Name: 'KCA21', FTA: 'AUS', FTN: 'M'}
{Id: '000000CaxCAAS', Name: 'KCZ43', FTA: 'CA', FTN: 'M'}
]
var mypropertylist = ['Имя','FTA','FTN'];
я хочу новый массив, как показано ниже
вар новый массив =
[
{value: '000000CayeAAC', concatName: 'KCP13 - LOS - M'}
{value: '000000CayLAAS', concatName: 'KCN15 - DC - M'}
{value: '000000CaxXAAS', concatName: 'KCA21 - AUS - M'}
]
я пробовал так
output.map(item=>{
this.newArray = [...this.newArray,
{value:item.Id,
concatName:item.Name + ' - '+item.FTA+ ' - '+item.FTN}];
я получил желаемый результат, но я хочу получить его динамически, используя mypropertylist
Заранее спасибо!
извините, я добавил только 3. 4-й должен быть таким же, как и другие
var output = [
{Id: '000000CayeAAC', Name: 'KCP13', FTA: 'LOS', FTN: 'M'},
{Id: '000000CayLAAS', Name: 'KCN15', FTA: 'DC', FTN: 'M'},
{Id: '000000CaxXAAS', Name: 'KCA21', FTA: 'AUS', FTN: 'M'},
{Id: '000000CaxCAAS', Name: 'KCZ43', FTA: 'CA', FTN: 'M'}
];
var newArray = output.map(item => {
return {Id: item.Id, concatName: [item.Name, item.FTA, item.FTN].join(" - ")};
});
Как сейчас написано, ваш ответ неясен. Пожалуйста, редактировать, чтобы добавить дополнительную информацию, которая поможет другим понять, как это относится к заданному вопросу. Дополнительную информацию о том, как писать хорошие ответы, можно найти в справочном центре.
Насколько я понимаю, список свойств — это список ключей, значения которых должны быть объединены в concatName
. Давайте сначала сделаем это только это манипулирование свойствами...
// return a string containing the values of props in object, concatenated
function concatValues(object, props) {
const values = props.map(prop => object[prop]);
return values.join(' - ');
}
Далее нам нужна вещь, которая трансформирует объект, изменяя реквизит Id и используя concatValues...
// return an object with it's Id renamed and it's props concatenated
function transform(object, props) {
return { value: object.Id, concatName: concatValues(object, props) }
}
Затем просто сопоставьте это с вводом. Демо...
// return a string containing the values of props in object, concatenated
function concatValues(object, props) {
const values = props.map(prop => object[prop]);
return values.join(' - ');
}
// return an object with it's Id renamed and it's props concatenated
function transform(object, props) {
return { value: object.Id, concatName: concatValues(object, props) }
}
const arrayA = [
{Id: '000000CayeAAC', Name: 'KCP13', FTA: 'LOS', FTN: 'M'},
{Id: '000000CayLAAS', Name: 'KCN15', FTA: 'DC', FTN: 'M'},
{Id: '000000CaxXAAS', Name: 'KCA21', FTA: 'AUS', FTN: 'M'},
{Id: '000000CaxCAAS', Name: 'KCZ43', FTA: 'CA', FTN: 'M'}
];
const mypropertylist = ['Name','FTA','FTN'];
const arrayB = arrayA.map(el => transform(el, mypropertylist))
console.log(arrayB);
тот ?
const output =
[ { Id: '000000CayeAAC', Name: 'KCP13', FTA: 'LOS', FTN: 'M' }
, { Id: '000000CayLAAS', Name: 'KCN15', FTA: 'DC', FTN: 'M' }
, { Id: '000000CaxXAAS', Name: 'KCA21', FTA: 'AUS', FTN: 'M' }
, { Id: '000000CaxCAAS', Name: 'KCZ43', FTA: 'CA', FTN: 'M' }
]
const concatFunction = (arr, ...items) =>
arr.map(({Id,...elms}) =>
({ value: Id
, concatName: items.map( item => elms[item] ).join(' - ')
})
)
console.log( concatFunction( output, 'Name', 'FTA', 'FTN' ))
.as-console-wrapper { max-height: 100% !important; top: 0; }
.as-console-row::after { display: none !important; }
Ваш ответ выиграет от объяснения того, что делает ваш код.
Почему
KCZ43
исчезает?