我的理解是O(n log n)
循环旨在遍历Javascript中的对象。 See this post和this post.
采用以下示例。这将在我的控制台中返回“未捕获的TypeError:项目不可迭代”。
for...in
如果将对象包装在array []中,则可以正常工作。 但是,我的第二个示例按预期工作。
var text = {
name: "Coptic",
ranges: [[994, 1008], [11392, 11508], [11513, 11520]],
direction: "ltr",
year: -200,
living: false,
link: "https://en.wikipedia.org/wiki/Coptic_alphabet"
};
function dominantDirection(items) {
for (let item of items) {
if (item.direction === 'ltr') {
return 'ltr';
} else {
return 'rtl';
}
}
}
console.log(dominantDirection(text));
为什么第一个示例不需要数组,而第二个示例不需要数组?
答案 0 :(得分:3)
在第一个示例中,您使用了for..of
,它不能用于对象,只能用于字符串和数组。要迭代对象,请使用for..in
构造,或使用Object.keys()
将对象的键放入数组中。
使用Object.keys()
的示例:
const text = {
name: "Coptic",
ranges: [[994, 1008], [11392, 11508], [11513, 11520]],
direction: "ltr",
year: -200,
living: false,
link: "https://en.wikipedia.org/wiki/Coptic_alphabet"
};
for (let key of Object.keys(text)) {
console.log(`${key}: ${text[key]}`);
}
或者您也可以使用新的Object.entries()
来获取键和值,如下所示:
const text = {
name: "Coptic",
ranges: [[994, 1008], [11392, 11508], [11513, 11520]],
direction: "ltr",
year: -200,
living: false,
link: "https://en.wikipedia.org/wiki/Coptic_alphabet"
};
for (let [key, value] of Object.entries(text)) {
console.log(`${key}: ${value}`);
}