Вот мой первый формат массива JSON:
this.columnNames = [
{field : "Name"},
{field : "Address"},
{field : "Age"}
];
Вот мой первый формат массива JSON:
this.rowData = [
{Name : "Praveen",Address : "aiff",Age : "12",w : "1",e : "8"},
{Name : "Akashay",Address : "xvn",Age : "15",w : "2",e : "7"},
{Name : "Bala",Address : "hjk",Age : "16",w : "3",e : "6"},
{Name : "Charu",Address : "sss",Age : "17",w : "4",e : "5"},
];
Здесь я хочу сравнить ЗНАЧЕНИЕ, которое присутствует в первом array(columnNames)
и KEYS, которое присутствует во втором массиве. Если он равен, то я хочу перенести эти совпадающие данные со второго array(rowData)
в новый массив.
И я хочу, чтобы мой конечный результат был таким:
public rowData: any =[
{Name : "Praveen",Address : "aiff",Age : "12"},
{Name : "Akashay",Address : "xvn",Age : "15"},
{Name : "Bala",Address : "hjk",Age : "16"},
{Name : "Charu",Address : "sss",Age : "17"},
];
arrays
angular
comparison
Правин Сиванадияр
источник
источник
Ответы:
Захватите поля из каждого объекта в вашем
columnNames
массиве, используя.map()
. Затем сопоставьте каждый объектrowData
новому объекту, созданному с использованием.reduce()
, который включает только ключи из вашегоfields
массива:Если вы можете поддерживать
Object.fromEntries()
(который берет массив вложенных[key, value]
пар и строит из них объект), тогда нет необходимости использовать.reduce()
:источник
Вы можете
filter
настроить свойства вашего объекта на основеcolumnNames
массива, а затем просто создать объект, используяObject.fromEntries
:Пример:
Или более отлаживаемая версия:
Пример:
Object.fromEntries - это метод, который преобразует список пар ключ-значение в объект.
Следующая строка означает, что мы фильтруем ()
allProperies
массив на основеcolumnNames
массива.Метод some () возвращает,
true
если какое-либо свойствоcolumnNames
существует вallProperties
:источник
Сохраните все имена полей в переменной,
keys
используя .map . Затем переберите исходный массив и создайте объект со свойствами, присутствующими вkeys
Попробуйте вот так:
Рабочая Демо
источник
obj
это новый пустой объект.obj[key] = item[key]
означает, что в первом цикле ключом является «Имя», такимobj[key]
будет{Name: }
иitem.Name
будетPraveen
,{Name: "Praveen" }