#javascript #node.js #arrays #dictionary
#javascript #node.js #массивы #словарь
Вопрос:
У меня есть объект со следующими данными:
obj =
{
key: 'mykey1597855209',
integrity: 'sha512-T9JW=='
}
{
key: 'mykey159785520915978552101597855212',
integrity: 'sha512-T9JWj=='
}
{
key: 'mykey15978552091597855210',
integrity: 'sha512-lcddfd=='
}
{
key: 'otherkey15978552091597855210',
integrity: 'sha512-abcdfd=='
}
Когда я это делаю console.log(typeof obj)
, я получаю object
в качестве выходных данных
Я хочу хранить только уникальные integrity
значения в массиве для ключей, которые имеют mykey*
в key value
Желаемый результат:
[ 'sha512-T9JWj==', 'sha512-lcddfd==' ]
Код:
var output = [];
for (var key in obj) {
if(obj[key] === 'mykey') {
output.push(obj[integrity])
}
}
console.log(output.join(', '))
Комментарии:
1. вы можете использовать регулярное выражение для сопоставления с шаблоном, а не === .
2. хорошо. также как получить только уникальное
integrity
значение?3. для обеспечения уникальной целостности создайте словарь. Здесь ключом словаря будет целостность. const dict = { } for(var ключ в obj) { dict[ключ[целостности]] = ключ}
4. Вы упоминаете в комментарии к ответу, который
obj
не является массивом. Вы правы. Это не массив. Это также не «JSON» или «Объект JSON» (JSON всегда был и всегда будет строкой).obj
это синтаксическая ошибка.
Ответ №1:
Сначала вы filter
обрабатываете массив, чтобы получить только объекты с соответствующим значением ключа, map
каждому результирующему элементу присваиваете его integrity
свойство, создаете Set
из этого массива и, наконец, используете синтаксис spread для получения результата в виде массива.
const arr = [
{
key: 'mykey1597855209',
integrity: 'sha512-T9JWj=='
},
{
key: 'mykey159785520915978552101597855212',
integrity: 'sha512-T9JWj=='
},
{
key: 'mykey15978552091597855210',
integrity: 'sha512-lcddfd=='
},
{
key: 'otherkey15978552091597855210',
integrity: 'sha512-abcdfd=='
}];
const res = [...new Set(arr.filter(({key})=>/mykey/.test(key)).map(({integrity})=>integrity))];
console.log(res);
Комментарии:
1. пожалуйста, обратите внимание, что
obj
это неarray
2. Тогда, пожалуйста, предоставьте несколько допустимых выборочных данных.