В своем сообщении вы указываете:
d.data:
[{hello: 'abc', asd: '123', fgh: '345' }]
[{sdfg: '123', yo: 'ghj', fgh: '345' }]
[{gd: '123', asd: '123', bonjour: 'yui' }]
[{hello: '123', asd: '567', fgh: '345' }]
Это не имеет смысла, так как это будет 4 уникальных массива, что делает data
Массив массивов (с объектами в них). Это будет выглядеть следующим образом:
d.data = [
[{hello: 'abc', asd: '123', fgh: '345' }],
[{sdfg: '123', yo: 'ghj', fgh: '345' }],
[{gd: '123', asd: '123', bonjour: 'yui' }],
[{hello: '123', asd: '567', fgh: '345' }]
];
Или это должен быть массив объектов, представленный в виде:
d.data = [
{hello: 'abc', asd: '123', fgh: '345' },
{sdfg: '123', yo: 'ghj', fgh: '345' },
{gd: '123', asd: '123', bonjour: 'yui' },
{hello: '123', asd: '567', fgh: '345' }
];
Я также не могу определить, хотите ли вы иметь строки, содержащие Числа быть целыми числами или строками в объектах. Похоже, вы ищете строки в вашем if()
, но то, как они хранятся, все они являются строками.
Предполагая, что последнее и что их нужно рассматривать как числа, а не как строки, я бы предложить использовать $.each()
и parseInt()
.
$(function() {
var d = {
data: [{
hello: 'abc',
asd: '123',
fgh: '345'
},
{
sdfg: '123',
yo: 'ghj',
fgh: '345'
},
{
gd: '123',
asd: '123',
bonjour: 'yui'
},
{
hello: '123',
asd: '567',
fgh: '345'
}
]
};
var str_arr = [];
$.each(d.data, function(i, el) {
console.log(i, el);
$.each(el, function(k, v) {
console.log(k + ": " + v);
if (!(parseInt(v))) {
console.log("Found String: " + k);
str_arr.push(k);
}
});
});
console.log(str_arr.join(", "));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Здесь мы повторяем каждый элемент (i
= индекс массива, el
= элемент массива) в массиве. Поскольку элемент является объектом, мы затем вложим в l oop вторую итерацию объекта (k
= ключи объекта, v
= значения объекта).
Теперь мы можем проверить значение и сохранить Введите ключ str_arr
, если он соответствует условиям. Я думаю, что это то, что вы пытались сделать со своим кодом. На самом деле не уверен.
Вы также можете посмотреть, используя .map()
или .filter()
, они оба тоже смогут это сделать. Возможно, с меньшим количеством строк.