Object.keys (obj): Array
извлекает все строкозначные ключи всех перечислимых собственных (не наследуемых) свойств.
blockquote>So он дает тот же список ключей, что и вы, путем тестирования каждого ключа объекта с помощью hasOwnProperty. Вам не нужна эта дополнительная тестовая операция, чем и
Object.keys( obj ).forEach(function( key ){})
, как предполагается, быстрее. Докажем это:
var uniqid = function(){ var text = "", i = 0, possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; for( ; i < 32; i++ ) { text += possible.charAt( Math.floor( Math.random() * possible.length ) ); } return text; }, CYCLES = 100000, obj = {}, p1, p2, p3, key; // Populate object with random properties Array.apply( null, Array( CYCLES ) ).forEach(function(){ obj[ uniqid() ] = new Date() }); // Approach #1 p1 = performance.now(); Object.keys( obj ).forEach(function( key ){ var waste = obj[ key ]; }); p2 = performance.now(); console.log( "Object.keys approach took " + (p2 - p1) + " milliseconds."); // Approach #2 for( key in obj ) { if ( obj.hasOwnProperty( key ) ) { var waste = obj[ key ]; } } p3 = performance.now(); console.log( "for...in/hasOwnProperty approach took " + (p3 - p2) + " milliseconds.");
В моем Firefox у меня есть следующие результаты
- Подход Object.keys 40.21101451665163 миллисекунд.
- для подхода ... in / hasOwnProperty принято 98.26163508463651 миллисекунд.
PS. на Chrome разница еще больше http://codepen.io/dsheiko/pen/JdrqXa
PS2: В ES6 (EcmaScript 2015) вы можете повторить итерируемый объект более приятным:
let map = new Map().set('a', 1).set('b', 2); for (let pair of map) { console.log(pair); } // OR let map = new Map([ [false, 'no'], [true, 'yes'], ]); map.forEach((value, key) => { console.log(key, value); });
Вот больше полного списка, Xbox, Zune и Windows...
Windows Only...
При поиске большего количества учебного руководства, а не полноценного решения Вы проверили ряд коллизии на сайте создателей XNA?
А именно, Серия 5 Коллизии: Коллизия Heightmap с Normals походит точно, что Вы ищете.
Ознакомьтесь с Matali Physics Engine. Matali Physics - физический движок для XNA. home page
Игровая Динамика Ньютона выезда, существует порт их механизма физики для XNA. Единственный протест состоит в том, что это только работает в соответствии с Windows.