这是我要实现的目标:
名为 Splice 的函数,该函数可以包含3个参数:
它从对象获取属性,并将其用于新创建的对象。
哪些属性由两个数字定义。第二个参数指示我要开始从中获取属性的键/值对的位置,第三个参数指示我要删除的数量。
因此,例如,splice(0,2)指向具有以下对象的对象的位置0和1:var obj = {a:1,b:2,c:2},并使用参数obj,0,2应该返回{a:1,b:2}
如果未传递第三个参数,则默认为1。
这是我到目前为止的内容(当仅传入一个数字时,不尊重最后一部分):
function splice(object, number, number2) {
var newOjb = {};
var count = 0;
object.forEach(function(element, index) {
count++;
if(count <= number2 && count > number) {
newObj[key]=item
} else if (number == count) {
newObj[key]=item
}
})
return newObj;
}
但是,我似乎使用了一些错误的语法,因为控制台告诉我forEach循环不是函数,并且代码通常似乎不起作用。
对基本解决方案有什么想法(没有花哨的技巧)?
答案 0 :(得分:2)
使用Object.entries(object).forEach(function([key, item], index) {
(注意:这不能保证顺序)。您在var newOjb = {};
P.S。您不需要count
,可以在您的条件下使用index
number
-索引,number2
-计数
function splice(object, number, number2) {
var newObj = {};
if (!number2) {
number2 = 1;
}
Object.entries(object).forEach(function([key, item], index) {
if (index >= number && index - number < number2) {
newObj[key] = item
}
})
return newObj;
}
let obj = {
a: 1,
b: 2,
c: 2
};
console.log(splice(obj, 0, 2))
console.log(splice(obj, 2))
console.log(splice(obj, 1, 2))
答案 1 :(得分:1)
FWIW,下面是一个函数,其功能与对象的行为render(){
var link = "www.some/random/link.jpg"
return(
<div>
<img src="some_image_source" alt={link}/>
</div>
)
}
完全一样(尽管不知道这是否等同于“幻想”):
Array.splice
但是请注意,通常您不应该依赖以任何特定方式对对象属性进行排序。该顺序是由标准定义和强制执行的,但并非所有引擎和工具都正确。
答案 2 :(得分:0)
对于您的默认值问题,这是一种效果很好的模式
function myfunction1(val) {
this.val = val ? val : 1;
console.log(this.val);
}