如何在具有不同属性的两个 js 对象上执行数学函数,例如除法
How to perform a math function like divide on two js objects with different properties
假设我有一个这样的js对象;
{'tv':390, 'table':200, 'cup':270, 'chair':325, 'door':300, 'books':290, 'radio':345}
还有第二个像这样的对象;
{0:30, 1:25, 2:20, 3:35, 4:30, 5:10, 6:15}
例如,如何按 属性 键对第一个对象除以第二个对象?即{390/30, 200/25, 270/20, ... }
对象具有相同数量的属性。
第二个应该是一个数组。
但是我不相信 for-in 会保持秩序 - 不过这确实有效:
var obj = {
'tv': 390,
'table': 200,
'cup': 270,
'chair': 325,
'door': 300,
'books': 290,
'radio': 345
}
var divis = [30, 25, 20, 35, 30, 10, 15];
var cnt = 0;
for (var o in obj) {
console.log(obj[o] / divis[cnt]);
cnt++
}
// OR
var keys = Object.keys(obj);
for (var i = 0; i < keys.length; i++) {
console.log(obj[keys[i]] / divis[i]);
}
由于您在第二个对象上使用数字作为 属性,因此您必须以不同于名称的方式引用它。使用 second[0]
或 second["0"]
var object = {
key: function(n) {
return this[ Object.keys(this)[n] ];
}
};
function key(obj, idx) {
return object.key.call(obj, idx);
}
var items ={'tv':390, 'table':200, 'cup':270, 'chair':325, 'door':300, 'books':290, 'radio':345};
var second ={0:30, 1:25, 2:20, 3:35, 4:30, 5:10, 6:15};
console.log(second["0"]);
console.log(items.tv/second[0]);
console.log(items.table/second["1"]);
// using helper
var myindex = 4;
console.log(key(items,4)/key(second,4));
console.log("using helper")
var count = Object.keys(items).length;
// so loop as long as they have same length
for (var i = 0; i < count; i++) {
console.log(key(items,i)/key(second,i));
}
属性 名称必须是字符串。这意味着 non-string 个对象不能用作对象中的键。任何 non-string 对象,包括数字,都通过 toString 方法类型转换为字符串。
假设我有一个这样的js对象;
{'tv':390, 'table':200, 'cup':270, 'chair':325, 'door':300, 'books':290, 'radio':345}
还有第二个像这样的对象;
{0:30, 1:25, 2:20, 3:35, 4:30, 5:10, 6:15}
例如,如何按 属性 键对第一个对象除以第二个对象?即{390/30, 200/25, 270/20, ... }
对象具有相同数量的属性。
第二个应该是一个数组。
但是我不相信 for-in 会保持秩序 - 不过这确实有效:
var obj = {
'tv': 390,
'table': 200,
'cup': 270,
'chair': 325,
'door': 300,
'books': 290,
'radio': 345
}
var divis = [30, 25, 20, 35, 30, 10, 15];
var cnt = 0;
for (var o in obj) {
console.log(obj[o] / divis[cnt]);
cnt++
}
// OR
var keys = Object.keys(obj);
for (var i = 0; i < keys.length; i++) {
console.log(obj[keys[i]] / divis[i]);
}
由于您在第二个对象上使用数字作为 属性,因此您必须以不同于名称的方式引用它。使用 second[0]
或 second["0"]
var object = {
key: function(n) {
return this[ Object.keys(this)[n] ];
}
};
function key(obj, idx) {
return object.key.call(obj, idx);
}
var items ={'tv':390, 'table':200, 'cup':270, 'chair':325, 'door':300, 'books':290, 'radio':345};
var second ={0:30, 1:25, 2:20, 3:35, 4:30, 5:10, 6:15};
console.log(second["0"]);
console.log(items.tv/second[0]);
console.log(items.table/second["1"]);
// using helper
var myindex = 4;
console.log(key(items,4)/key(second,4));
console.log("using helper")
var count = Object.keys(items).length;
// so loop as long as they have same length
for (var i = 0; i < count; i++) {
console.log(key(items,i)/key(second,i));
}
属性 名称必须是字符串。这意味着 non-string 个对象不能用作对象中的键。任何 non-string 对象,包括数字,都通过 toString 方法类型转换为字符串。