#javascript #json
#javascript #json
Вопрос:
У меня есть следующая строка JSON :
{"name":"Marine Lines","location_id":3},{"name":"Ghatkopar","location_id":2}
Я хочу location_id как
3,2
Комментарии:
1. Эта строка JSON заключена в виде массива? т. Е. окружена
[]
?2. попробуйте использовать библиотеку для этого предложения, json.org/js.html
3. @Mitul — Я откатил ваше редактирование, потому что, не получив ответа от OP, я не думаю, что мы можем просто предположить, что их входная строка отличается от того, что они сказали. (Хотя, очевидно, что это недопустимый JSON.)
Ответ №1:
Просто:
var data = [{"name":"Marine Lines","location_id":3},{"name":"Ghatkopar","location_id":2}]
var result = data.map(function(val) {
return val.location_id;
}).join(',');
console.log(result)
Я предполагаю, что вам нужна строка, следовательно .join(',')
, если вам нужен массив, просто удалите эту часть.
Комментарии:
1. К вашему сведению,
.join
по умолчанию значения объединяются запятой.2. @Rajesh Да, но я добавил это для пояснения.
Ответ №2:
Вы можете добавить скобки к строке, проанализировать string ( JSON.parse
) и сопоставить ( Array#map
) свойство, а join ( Array#join
) — результат.
var string = '{"name":"Marine Lines","location_id":3},{"name":"Ghatkopar","location_id":2}',
array = JSON.parse('[' string ']'),
result = array.map(function (a) { return a.location_id; }).join();
console.log(result);
Комментарии:
1. OP отредактировал вопрос, чтобы добавить заключающие квадратные скобки.
2. @MohitBhardwaj — Это редактирование не было сделано OP, и OP не ответил на запрос об этом, поэтому на данный момент я откатил это редактирование.
Ответ №3:
obj=[{"name":"Marine Lines","location_id":3}, {"name":"Ghatkopar","location_id":2}]
var res = [];
for (var x in obj)
if (obj.hasOwnProperty(x))
res.push(obj[x].location_id);
console.log(res.join(","));
Ответ №4:
var json = [{"name":"Marine Lines","location_id":3},{"name":"Ghatkopar","location_id":2}];
var locationIds = [];
for(var object in json){
locationIds.push(json[object].location_id);
}
console.log(locationIds.join(","));
Ответ №5:
Вы также можете просмотреть .reduce
и создать строку вручную
var d = [{"name":"Marine Lines","location_id":3},{"name":"Ghatkopar","location_id":2}]
var location_id_str = d.reduce(function(p, c) {
return p ? p ',' c.location_id : c.location_id
},'');
console.log(location_id_str)
Комментарии:
1. Это не работает, если в массиве более двух объектов.
2. Идеальное решение. Добывать более 500 значений, это заняло всего 100 мс времени.
Ответ №6:
попробуйте это
var obj = [{"name":"Marine Lines","location_id":3},{"name":"Ghatkopar","location_id":2}];
var output = obj.map( function(item){
return item.location_id;
});
console.log( output.join(",") )
Ответ №7:
var arr = [{"name":"Marine Lines","location_id":3},{"name":"Ghatkopar","location_id":2}];
var location_array = [];
for( var i = 0; i < arr.length; i )
{
location_array.push( arr[i].location_id );
}//for
var location_string = location_array.join(",");
console.log(location_string);
Примечание: вам может потребоваться использовать JSON.parse(), если arr
изначально он находится в строковом формате.
Ответ №8:
Вы можете использовать for..of
цикл
var arr = [{
"name": "Marine Lines",
"location_id": 3
}, {
"name": "Ghatkopar",
"location_id": 2
}];
var res = [];
for ({location_id} of arr) {res.push(location_id)};
console.log(res);