[英]Loop through and extract item values from JSON notation using Javascript
[英]Extract only values from JSON object in javascript without using a loop
有沒有一種“不錯”的方法可以從 json object 中獲取所有值(我不關心鍵)——只需將值放入數組中,而不使用循環? (lang 是 Javascript)
這取決於您如何定義“循環”。
您可以使用Object.keys
提取屬性,然后map
它們map
到它們的值。
……但它本質上仍然是一個引擎蓋下的循環。
var json = `{ "foo": 1, "bar": 2, "baz": 3 }`; var obj = JSON.parse(json); var values = Object.keys(obj).map(function (key) { return obj[key]; }); console.log(values);
如果瀏覽器支持較弱,您可以使用values
方法。
var json = `{ "foo": 1, "bar": 2, "baz": 3 }`; var obj = JSON.parse(json); var values = Object.values(obj); console.log(values);
我認為您正在尋找 Object.values() 函數,只需將對象作為第一個參數傳遞給 Object 的values方法。 就是這樣!
Object.values({something: 'lol'});
> ["lol"]
是的,這是一個循環,但您正在調用的基礎方法(例如Object.values
或arr.map
仍然是 loops 。 我發現這對於從 json 對象中提取文本尤其用於全文搜索很有用,並認為它很有用,因為我最初需要它來這里,但由於json本質上是遞歸的,因此答案僅觸及表面。
function textFromJson(json) {
if (json === null || json === undefined) {
return '';
}
if (!Array.isArray(json) && !Object.getPrototypeOf(json).isPrototypeOf(Object)) {
return '' + json;
}
const obj = {};
for (const key of Object.keys(json)) {
obj[key] = textFromJson(json[key]);
}
return Object.values(obj).join(' ');
}
在 ES2017 中,你有 Object.values()。 你也可以polyfill 它。
您只需要將 JSON 轉換為 JavaScript 對象並調用 Object.values()。 結果是一個值數組。
var obj = JSON.parse(jsonData);
var result = Object.values(obj);
如果將 function 傳遞給JSON.parse
,每次解析值時都會調用它:
function get_values(json) {
let values = []
JSON.parse(json, (key,value)=>{ values.push(value) })
return values
}
前任:
get_values(`{"a":1, "b":[true, false], "c":3}`)
// returns a list of:
• 1
• true
• false
• [true, false]
• 3
• {a:1, b:[true, false], c:3}
注意:如果您不認為完整的 object 是一個“值”,只需刪除最后一項即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.